Din egen App Center: skicka dina QPKG-paket från Git till varje NAS
Bucket & Code Server IDE har ett eget App Center-förråd på din NAS. Ett QPKG-projekt som skapats med Nytt projekt bygger vid varje Git-push och publicerar det signerade paketet i förrådet. På dina andra NAS-enheter lägger du till förrådets adress i App Center en gång. Sedan installerar och uppdaterar du dina paket som vilken annan app som helst. Cloudflare Tunnel gör förrådet, och Git om du vill, tillgängligt på internet utan att öppna någon port i routern.
- Förberedmoduler, QDK, ett certifikat
- ProjektNytt projekt, QPKG-paket
- Signeratvå hemligheter i Forgejo
- Förråddess adress i App Center
- Internetett värdnamn för paket
Bilderna kommer från panelen med varje fält ifyllt så som den här guiden beskriver. Adresserna tillhör en NAS på 192.168.1.20, och de publicerade namnen är exempel under example.com.
01Innan du börjar
- Git, CI och Redigerare måste vara påslagna: en admin slår på var och en med dess knapp på Översikt (Slå på Git, Slå på Git och CI, Slå på Redigerare). Guiden Nytt projekt kräver Git och Redigerare, och CI kör projektets arbetsflöde vid varje push.
- QDK måste vara installerat: installera QNAP QDK 2.5.0 på sidan Verktygskedjor, fliken QNAP.
- Du behöver ett kodsigneringscertifikat som QNAP har utfärdat till dig, i form av filer:
certificate,private_keyoch, för kedjan,ca_certs. App Center kontrollerar ett pakets kodsignatur när det installeras, och förrådet på sidan Paket tar bara emot kodsignerade paket. Ett certifikat på en maskinvarutoken stöds inte.
02Skapa projektet
Öppna Nytt projekt från sidan Git eller kommandopaletten (rollen developer).
- Mall. Under Paket för QTS väljer du QPKG-paket och trycker på Nästa.

- Namn och synlighet. Namnet används för förrådet, mappen och paketet: 1 till 20 bokstäver, siffror, bindestreck eller understreck. Ägaren är ditt konto eller en organisation. Låt projektet vara Privat.

- Tjänst. Välj hur paketet startar och stoppas: Kommandoradsverktyg länkar programmet till
/usr/bin, Bakgrundstjänst kör det under ett eget konto, Webbapp ger det dessutom knappen Öppna i App Center, och Tom har bara tjänstens grundläggande kommandon (start, stop och så vidare). Du kan ändra de här blocken senare i projektvyn.
- Bygge. Välj den miljö som projektet byggs i och låt Bygg direkt efter skapandet vara på.

- Publicering. Slå på Publicera i denna NAS:s App Center-förråd. Samma reglage finns sedan kvar i projektets inställningar och låter CI publicera vid varje körning.

- Granskning. Kontrollera stegen som kommer att köras och tryck på Skapa projekt.

Första jobbet skapar förrådet i Forgejo och mappen projects/<name> med den första commiten: mallens filer och arbetsflödet .forgejo/workflows/build.yml. Första bygget har ännu inget certifikat, så dess publiceringssteg stannar och säger att paketet saknar kodsignatur. Reglaget står kvar på, och när steg 03 är klart publicerar varje push.
03Signera varje bygge
På NAS:en lägger du certifikatets filer bredvid qpkg.cfg i projects/<name>. Mallens .gitignore håller dem utanför git. Ett bygge i den mappen signerar sedan paketet, och första raden i bvs qbuild säger case 1. När miljön saknar openssl eller bsdextrautils stoppar bygget och anger kommandot som installerar dem.
CI checkar ut förrådet utan dessa filer, så den hämtar dem från två hemligheter. I Forgejo öppnar du förrådets Inställningar → Åtgärder → Hemligheter och trycker på Lägg till hemlighet två gånger: QPKG_CERTIFICATE med utdata från base64 -w0 certificate, och QPKG_PRIVATE_KEY med den från base64 -w0 private_key. Forgejo själv frågar efter Base64 när ett värdes radbrytningar måste bevaras. Ett certifikat med kedja behöver en tredje hemlighet, QPKG_CA_CERTS, och en tredje rad i första steget som skriver den till ca_certs.
Lägg sedan till två steg i .forgejo/workflows/build.yml: ett som skriver filerna före bygget, direkt efter checkouten, och ett i slutet av listan som tar bort dem oavsett resultat. Mallens egna steg lämnas som de är.
# .forgejo/workflows/build.yml: the two new steps, in the template's steps list steps: - uses: actions/checkout@v4 - name: certificate from the secrets run: | printf '%s' "$CERT" | base64 -d > certificate printf '%s' "$KEY" | base64 -d > private_key chmod 600 private_key env: CERT: ${{ secrets.QPKG_CERTIFICATE }} KEY: ${{ secrets.QPKG_PRIVATE_KEY }} # the template's build and publish step follows here, unchanged - name: remove the certificate if: always() run: rm -f certificate private_key ca_certs
04Varje push publiceras
Varje push till repositoriet kör arbetsflödet på NAS:ens egen runner. Det bygger paketet och publicerar det med --latest, så repo.xml listar den nya versionen direkt och App Center erbjuder den vid nästa kontroll. Ett osignerat bygge publiceras inte: körningen avslutas med en varning som anger orsaken.
På projektets sida (Projekt, eller sidopanelen i redigeraren) kör du samma steg för hand: Bygg, Bygg om, Testdriftsättning (bara för en admin, bara signerade paket) och Publicera.
Projektets kort Inställningar har reglaget Publicera i App Center-förrådet. När reglaget är av hoppar en CI-körning över publiceringen och visar en notis.
Sidan Paket listar varje paket med dess senaste version och signatur. En version som en utvecklare laddar upp dit för hand väntar tills en admin gör den till den senaste.
05Lägg till repositoriet på dina övriga NAS-enheter
- Kopiera adressen från kortet App Center-adress på sidan Paket.

- På den andra NAS:en: App Center → ⚙ Settings → App Repository → Lägg till. Ge det ett namn, klistra in adressen och tryck på Lägg till.
- Dina paket finns under det namnet i App Centers vänstra panel. Installera dem där. När repositoriet listar en nyare version erbjuder App Center den som uppdatering.
Den här LAN-adressen fungerar för NAS-enheter i ditt nätverk. För en enhet någon annanstans måste repositoriet publiceras på internet.
06Över internet med Cloudflare Tunnel
Paketet innehåller cloudflared, som ansluter från NAS:en ut till Cloudflare: ingen port i routern behöver öppnas, och Cloudflare har certifikaten för namnen. Du behöver en domän vars DNS ligger hos Cloudflare och en API-token för den zonen (dash.cloudflare.com, My Profile → API Tokens) med fyra behörigheter: Account, Cloudflare Tunnel, Edit; Zone, DNS, Edit; Zone, Cache Rules, Edit; Zone, Cache Purge, Purge. Om token använder Client IP Address Filtering lägger du in båda NAS:ens publika adresser där, IPv4 och IPv6.
| Namn | Vad den serverar |
|---|---|
Värdnamn för paketqpkg.example.com | bara GET och HEAD för /repo/, vilket är allt som App Center på dina andra NAS-enheter behöver |
Huvudvärdnamncode.example.com | panelen, Forgejo på /git/ för clone och push över HTTPS, repositoriet skrivskyddat, webbvisningen av publika repositorier och användarguiden |
- Vill du ha ett huvudvärdnamn slår du först på Publik bläddring på sidan Git och trycker på Spara och starta om Forgejo. Sidan Publicering nekar ett huvudvärdnamn så länge Publik bläddring är av. Repositorier som är markerade som privata förblir dolda.

- Öppna Publicering under Administration (endast admins). Skriv namnen och token, låt Cacheförval vara på och tryck på Publicera. Paketet kontrollerar allt hos Cloudflare först, ändrar inget där om en kontroll misslyckas, och säger vad som ska rättas.

- Sedan skapar den tunneln, pekar varje namn mot den och startar cloudflared. Kortet Tunnel visar anslutningarna.

- App Center-adressen på sidan Paket pekar nu på värdnamnet för paket. Lägg till den adressen på NAS-enheter utanför ditt nätverk.

- Har du ett huvudvärdnamn anger du dess adress i Publik URL på sidan Nätverk, så att Forgejos länkar och HTTPS-klonadresser använder den.

- Git över SSH går inte genom tunneln. Utifrån klonar och pushar du över HTTPS. Du kan också vidarebefordra en port i routern till porten för Git över SSH (9952) och ange SSH-värd i klon-URL:er på sidan Nätverk.
- Cloudflare tar emot förfrågningar upp till 100 MB. Pusha eller ladda upp allt större över LAN-adressen.
- En publicering i repositoriet rensar
repo.xmlfrån Cloudflares cache direkt, så App Center ser den nya versionen vid nästa kontroll.
07Vad internet når
Sidan Publicering listar vad varje namn serverar och cache-reglerna bredvid.
- Huvudvärdnamnet svarar på
/ide/med 404 tills en admin slår på Publicera redigeraren. Redigerarens terminal är ett root-skal på NAS:en, så slå först på tvåfaktorsautentisering för utvecklar- och adminkonton.
- Medan CI är på körs varje arbetsflöde som pushas till ett repository som root på NAS:en, oavsett om det pushas från internet eller från LAN:et. Ge push-åtkomst bara till personer som du skulle anförtro NAS:ens admin-lösenord.
- Det första administratörslösenordet sätts aldrig via ett publicerat namn: skärmen för första start tar bara emot en klient i det lokala nätverket.
- Stoppa avslutar cloudflared och ändrar ingenting hos Cloudflare. Ta bort från Cloudflare tar bort DNS-posterna, cache-reglerna och tunneln som paketet skapade, och glömmer token.