Inofficiell
På den här sidan
  1. 01Innan du börjar
  2. 02Skapa projektet
  3. 03Signera varje bygge
  4. 04Varje push publicerar
  5. 05Lägg till förrådet på dina andra NAS-enheter
  6. 06Över internet med Cloudflare Tunnel
  7. 07Vad internet når

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.

  1. Förberedmoduler, QDK, ett certifikat
  2. ProjektNytt projekt, QPKG-paket
  3. Signeratvå hemligheter i Forgejo
  4. Förråddess adress i App Center
  5. 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_key och, 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.
Kortet Kodsignering på sidan Paket: 1, ett certifikat som filer, stöds; 2, ett certifikat på en maskinvarutoken, stöds inte; 3, inget certifikat, osignerat

02Skapa projektet

Öppna Nytt projekt från sidan Git eller kommandopaletten (rollen developer).

  1. Mall. Under Paket för QTS väljer du QPKG-paket och trycker på Nästa. Paket för QTS: QPKG-paket valt, bredvid App Builder-app
  2. 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. Namn nas-notes, Ägare ola, Synlighet Privat
  3. 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. Utgå från: Kommandoradsverktyg valt; Bakgrundstjänst, Webbapp och Tom
  4. Bygge. Välj den miljö som projektet byggs i och låt Bygg direkt efter skapandet vara på. Byggmiljö: ubuntu2404-builder, ubuntu-24.04-x86_64, glibc 2.39, och anmärkningen att bygget körs i den här miljön via bvs-chroot Bygg direkt efter skapandet, påslaget
  5. 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. Publicering: Testdriftsättning på denna NAS av, endast signerade paket; Publicera i denna NAS:s App Center-förråd på; Publicera på min webbserver av
  6. Granskning. Kontrollera stegen som kommer att köras och tryck på Skapa projekt. Vad som kommer att köras: Forgejo-repository och första commit, Första bygget, Publicera i App Center-förrådet; Testdriftsättning och Publicera på min webbserver inte valda; knappen 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.

Forgejos dialog Lägg till hemlighet: Namn QPKG_CERTIFICATE, Värde en Base64-rad, knapparna Avbryt och Bekräfta

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.

Pipelinen för ett QPKG-projekt: Bygge i ubuntu2404-builder med Bygg och Bygg om; Testdriftsättning kräver ett kodsignerat paket; Publicering säger att bygget är osignerat och att repositoriet bara tar emot signerade paket, och att CI även publicerar i App Center-förrådet; Publicera på webben kan inte köras här

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.

Publicera i App Center-förrådet, påslaget: projektets CI lägger till sina paket i NAS:ens App Center-förråd

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.

Publicerade paket: namn, senaste version, arkitekturer, signerat, versioner och när de publicerades

05Lägg till repositoriet på dina övriga NAS-enheter

  1. Kopiera adressen från kortet App Center-adress på sidan Paket. App Center-adress: http://192.168.1.20:9950/repo/repo.xml
  2. 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.
  3. 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.

NamnVad den serverar
Värdnamn för paket
qpkg.example.com
bara GET och HEAD för /repo/, vilket är allt som App Center på dina andra NAS-enheter behöver
Huvudvärdnamn
code.example.com
panelen, Forgejo på /git/ för clone och push över HTTPS, repositoriet skrivskyddat, webbvisningen av publika repositorier och användarguiden
  1. 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. Reglaget Publik bläddring på sidan Git, påslaget
  2. Ö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. Värdnamn och token: Huvudvärdnamn code.example.com, Värdnamn för paket qpkg.example.com, token som punkter, Tunnelnamn tomt, Cacheförval på, de fyra behörigheter som token behöver och knappen Publicera
  3. Sedan skapar den tunneln, pekar varje namn mot den och startar cloudflared. Kortet Tunnel visar anslutningarna. Kortet Tunnel: 4 anslutningar till Cloudflare, cloudflared igång, tunneln bucketvs-nas-lab och de publicerade namnen code.example.com och qpkg.example.com
  4. 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. App Center-adress: https://qpkg.example.com/repo/repo.xml
  5. 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. Publik URL satt till https://code.example.com på sidan Nätverk
  • 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.xml frå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.

Vad internet når: huvudvärdnamnet serverar panelen, Forgejo, webbvisningen och paketrepositoriet, redigeraren endast medan dess omkopplare är på, aldrig WebDAV; värdnamnet för paket serverar endast GET och HEAD för /repo/. Cacheförval: paket ett år, ikoner en dag, repo.xml 5 minuter och rensas vid varje publicering, API:et, Forgejo och inloggningen cachas aldrig
  • 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. Redigeraren på internet: omkopplaren Publicera redigeraren, av, med varningen om root-skalet och tvåfaktorsautentisering
  • 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.