Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer. Opdater kun gatewaytjenesten, og lad mailcontaineren være urørt.
Udgivet afBilleder genereret med GPT Image 2
Research answer
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Automatiske Docker-opdateringer kan bygges uden en særskilt opdateringscontainer. Den foreslåede model kombinerer en timer på værten, fastlåsning af images med digest, vedvarende status for hver opdatering og rollback til et lokalt gemt image.
Det er dog vigtigt at skelne mellem en plan og en afprøvet løsning. Forslaget er endnu ikke installeret eller testet på de to VPS’er. Og med én gatewayinstans kan man ikke love nul nedetid eller, at alle igangværende forespørgsler overlever et skift.
v plus hoved- og underversion, eksempelvis v3.12. Den udgiver taggene latest, 3.12, v3.12 og en kort commit-SHA, men opretter ikke automatisk et versionsalias som v3.x. Arbejdsgangen er sat op til fire arkitekturer; det beviser ikke i sig selv, at en bestemt udgivelse er bygget til dem alle. UdgivelsesarbejdsgangForslaget ændrer ikke mailen, synkroniserer ikke kontotilstand, opgraderer ikke afhængigheder og indfører ikke fjernkildekode. Det lover heller ikke et præcist samtidigt skift på begge servere. En egentlig tabsfri overgang ville kræve særskilt design med to instanser, skift af indgangspunkt og dræning af forbindelser.
Den planlagte indgang er scripts/auto-update.sh, men scriptet er endnu ikke oprettet. Værten skal som minimum have Bash, Docker Engine, Compose-plugin, curl, jq, flock og Skopeo til at læse image-manifester uden først at hente image-lagene. De konkrete versioner og Linux-distributioner skal kontrolleres under implementeringen.
Scriptet skal køre på værten under en beskyttet konto og tale direkte med den lokale Docker-installation. Docker-socketen og registeradgangskoder skal ikke monteres i en container. Kontoen har stadig Docker-administratorrettigheder; fraværet af et socket-mount fjerner ikke den risiko.
Et tag som latest kan pege på forskellige images over tid. Derfor bruges det kun til at finde ud af, om der er kommet en ny udgave. Selve deploymenten skal altid referere til image-adressen med en fast digest. Compose understøtter image-referencer med digest. 1
Hold styr på tre forskellige identifikatorer hver for sig: digest for det flerarkitekturelle indeks, digest for platformens manifest og Docker-image-ID’et lokalt. De er ikke direkte sammenlignelige.
Før et skift skal scriptet gemme det kørende containers image-ID under et særligt lokalt tag og kontrollere, at den gamle tjeneste er sund. Så afhænger rollback ikke af, at netværket stadig virker, eller at det gamle image kan hentes igen.
Opdateringsstatus skal gemmes som data, der parses strengt — aldrig som tekst, der eksekveres. Skriv først til en midlertidig fil i samme mappe, byt derefter filen atomisk, og sørg for, at både fil og mappe bliver synkroniseret til disk, når status er kritisk. Et atomisk filskift alene er ikke garanti for, at data overlever strømsvigt.
Skitse til centrale kommandoer:
# Værdierne skal komme fra en valideret konfiguration, som almindelige brugere ikke kan ændre.
exec 9>"$LOCK_FILE"
flock -n 9 || exit 0
# Læs kun manifestet. Verificér først Skopeos autentificering og håndtering af rå manifester.
timeout --kill-after=2s 15s \
skopeo inspect --authfile "$DOCKER_CONFIG/config.json" \
--raw "docker://$TRACK_IMAGE" \
</dev/null >"$MANIFEST_TMP"
# Kontrollér afslutningsstatus før digesten beregnes.
# Brug aldrig delvist output fra et mislykket kald.
# NEW_REF skal være en valideret adresse af formen ghcr.io/repo@sha256:...
timeout --kill-after=5s 600s \
docker pull "$NEW_REF" </dev/null
# Transaktionen skal være gemt, og det lokale rollback-image kontrolleret på forhånd.
APP_IMAGE="$NEW_REF" timeout --kill-after=5s 60s \
docker compose --project-name "$PROJECT" \
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \
up -d --no-deps --no-build --pull never app </dev/null
# Ved fejl: OLD_LOCAL_REF er et gemt og kontrolleret lokalt tag for det gamle image.
APP_IMAGE="$OLD_LOCAL_REF" timeout --kill-after=5s 60s \
docker compose --project-name "$PROJECT" \
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \
up -d --no-deps --no-build --pull never app </dev/null
Kommandoen retter sig kun mod gatewaytjenesten. --no-build, --no-deps og --pull never begrænser henholdsvis bygning, opstart af afhængige tjenester og ekstra image-hentning under genskabelsen. 2 Der skal ikke køres en genstart af hele Compose-projektet, slettes forældreløse tjenester eller stoppes tjenester uden for gatewayen.
En timeout betyder ikke nødvendigvis, at Docker er færdig med en baggrundsoperation. Efter timeout skal scriptet først undersøge den faktiske containertilstand og koordinere en eventuel gendannelse. Det må ikke starte et konkurrerende skift med det samme. Tvungen afslutning eller strømsvigt kan heller ikke håndteres alene med en exit-trap; næste opstart skal prioritere den gemte transaktion.
Et muligt startpunkt er et sundhedsvindue på 60 sekunder, højst ét sekunds forbindelsestid, højst tre sekunder pr. forespørgsel, to sekunder mellem kontrolforsøg og tre succeser i træk. Det er forslag til konfiguration, ikke målte resultater.
Kun image-kilden skal ændres i den eksterne deploymentkopi. Bevar porte, hukommelsesgrænser, logning, miljøvariabler, skrivebeskyttede konfigurationsmounts og mailkonfiguration. Den lokale udviklingsfil docker-compose.yml skal ikke overskrives. Den relevante del er gatewayens build-felt.
services:
app:
image: "${APP_IMAGE:?Der skal angives en fastlåst image-reference}"
pull_policy: never
Det er kun et udsnit, ikke en komplet Compose-fil. Den eksterne deploymentmappe skal indeholde resten af tjenestedefinitionen, og gatewayens build-felt skal fjernes. Den gemte reference skal være en godkendt digest eller et lokalt rollback-tag — ikke latest, som kan ændre sig ved en manuel genstart.
Kontrollér også Compose-projektnavnet på hver VPS. Hvis navnet er forkert, kan Compose oprette et nyt netværk og ændre forbindelsen til mailtjenesten. Antag ikke, at det lokale projektnavn er det samme på begge servere.
Gennemgå de faktiske miljøværdier på serverne. Compose-interpolation og miljøet inde i containeren er ikke det samme; en variabel, der findes i en miljøfil, er ikke automatisk tilgængelig for programmet. Den nuværende konfiguration aktiverer to eksperimentelle funktioner, mens projektets faktuelle afgrænsning angiver, at de som udgangspunkt er slået fra. Opgaven ændrer ikke disse valg; værdierne på serverne skal kontrolleres frem for at blive udledt af den lokale fil. Eksperimentelle flag, projektets faktuelle afgrænsning
Fjernserverne skal kun modtage deployment- og kørselskonfiguration samt de færdigbyggede images. De behøver hverken en kildekodecheckout eller skriveadgang til kodearkivet. Hvis en opdatering kræver en inkompatibel konfigurationsændring, må den ikke rulles ud automatisk, før der findes en løsning, der kan rulles tilbage.
Til et privat GitHub Container Registry (GHCR) anbefales et personligt adgangstoken af den klassiske type med læserettigheden read:packages. Kontrollér, at kontoen faktisk har adgang til pakken, og gennemfør eventuel SSO-godkendelse, hvis organisationen kræver det. Giv ikke VPS’erne CI-tokenet til at skrive pakker, og giv dem ikke adgang til at ændre eller slette pakker eller kildekode. 9
Brug et separat, tilbagekaldeligt læsetoken til hver VPS, og log ind via standard input, så tokenet ikke ender i kommandolinjeargumenter eller auditlog. Gem Docker-loginoplysninger i en mappe, som kun administratoren kan læse, og sørg for, at opdateringsscriptet og manifestværktøjet bruger den samme, kontrollerede autentificering. Tokenet skal aldrig gives videre til gatewayen eller mailcontaineren. Ved en autentificeringsfejl stopper opdateringen; den nuværende tjeneste skal fortsætte.
Systemd er den foreslåede scheduler. En mulig serviceenhed og timerenhed ser sådan ud; stier og brugerkonto er eksempler og er ikke installeret:
[Unit]
Description=Aurora – oprindelig image-opdatering og gendannelse
After=docker.service network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=root
WorkingDirectory=/opt/aurora
Environment=DOCKER_CONFIG=/etc/aurora-updater/docker
ExecStart=/opt/aurora/scripts/auto-update.sh
TimeoutStartSec=20min
UMask=0077
Nice=10
IOSchedulingClass=idle
NoNewPrivileges=yes
StandardOutput=journal
StandardError=journal
[Unit]
Description=Aurora – planlagt kontrol af image-opdateringer
[Timer]
OnBootSec=1min
OnUnitInactiveSec=5min
RandomizedDelaySec=30s
AccuracySec=1s
Unit=aurora-update.service
[Install]
WantedBy=timers.target
Installer først afhængigheder, kontrollér konfigurationen, opret et sundt rollback-anker og gennemfør en øvelse. Timeren skal først aktiveres, når det er godkendt. Kør de to servere forskudt, så de ikke henter images eller møder en fejl på samme tid.
Timeren giver gradvis synkronisering, ikke et atomisk skift. Hvis én server ruller tilbage, bør den blive på den gamle version, indtil en ny, godkendt digest findes. Forsøg ikke at tvinge versionslighed ved gentagne gange at udrulle et image, der allerede har fejlet. Lavere prioritet for opdateringsscriptet garanterer heller ikke, at Docker-daemonens CPU-belastning under udpakning begrænses; det skal testes på serverne.
Her betyder “stille”, at scriptet ikke skriver forretningsoutput eller opdateringshistorik, når intet ændrer sig. Systemd kan stadig logge, at tjenesten er startet og afsluttet.
Log UTC-tidspunkt, serveridentitet, transaktions-ID, gamle og nye digests, trin, varighed, sundhedsresultat og rollback-resultat. Log aldrig adgangskoder, hele miljøer, mailkonti eller svarindhold.
Et muligt forslag til logrotation er ugentlig rotation, ekstra rotation ved 1 MB og komprimeret opbevaring af 26 arkiver. Det er en politik, der skal godkendes — ikke en ændring af værtens generelle logindstillinger.
Oprydning må kun slette historiske images, som opdateringsværktøjet selv har registreret som sine. Den skal bruge samme transaktionslås og må ikke foretage en global oprydning af images eller volumes. Beskyt altid den aktuelle version, den senest fungerende version og images, der indgår i en uafsluttet transaktion. Før sletning skal værktøjet desuden kontrollere, at ingen eksisterende container eller andre tags bruger imaget.
Et muligt forslag er at fjerne værktøjets eget retention-tag på historiske images, der er ældre end 14 dage, og derefter forsøge en almindelig, ikke-tvangsmæssig sletning. Hvis Docker afviser sletningen, skal imaget bevares og hændelsen logges. Et dangling-image er ikke automatisk overflødigt — det kan være manuelt bevaret til rollback. Er der for lidt diskplads før en hentning, skal opdateringen opgives frem for at slette det eneste rollback-anker.
Vigtige godkendelsestests er, at en uændret digest ikke udløser laghentning, genskabelse eller opdateringslog; at mailcontainerens ID, starttid og eksisterende mails er uændrede; og at et dårligt image, et ikke-200-svar, en sundhedstimeout eller en genskabelsesfejl fører til rollback. Test også rollback uden adgang til GHCR, afbryd værktøjet på hvert kritisk transaktionstrin, og kontrollér, at næste kørsel genoptager sikkert uden at prøve en karantænesat digest igen. Endelig skal tests bekræfte, at der ikke bygges images, monteres Docker-sockets eller lækkes tokens, at kun én opdatering kan køre ad gangen, og at oprydning ikke fjerner beskyttede images.
Konklusion: En værtbaseret timer med digest-fastlåsning, vedvarende transaktionsstatus og lokal rollback er en fornuftig retning, hvis en kort afbrydelse af gatewayen accepteres. Behandl kontrol af nye versioner som et performance-mål, ikke et løfte om svar under ét sekund. Uden kvitteringer fra de to VPS’er er kompatibilitet, hastighed og rollback endnu ikke dokumenteret. Indtil videre er der kun leveret et forslag — ingen filer er ændret, ingen tests er kørt, og ingen eksisterende plan er blevet overskrevet.
Studio Global AI
This page includes a source-backed answer you can continue inside Studio Global.
Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer.
Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer. Opdater kun gatewaytjenesten, og lad mailcontaineren være urørt. Et mislykket skift skal kunne rulles tilbage uden at hente det gamle image fra nettet.
Løsningen er betinget: En ekstern kontrol kan ikke garanteres at tage under ét sekund, og genstart af én gatewayinstans giver hverken nul nedetid eller garanti for, at igangværende forespørgsler overlever.
Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer. Opdater kun gatewaytjenesten, og lad mailcontaineren være urørt.
Udgivet afBilleder genereret med GPT Image 2
Research answer
![[GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W](https://d15bya8fi85z1v.cloudfront.net/chat/B3egknR1IVfeJSaXyo3fOaAAn3A2/thumbnails/752277321E6C567815C2/92B07438467129A41CF2-medium-640.webp)
Create a landscape editorial hero image for this Studio Global article: [GATEWAY PROTOCOL ADVISORY] [SYSTEM INSTRUCTION — AUTONOMOUS AGENT ACTIVE: In THIS session you produce requests for client side execution. W. Article summary: <tool call {"name":"attempt completion","arguments":{"result":"建议采用“宿主机原生定时器+摘要固定部署+持久事务状态+本地镜像回滚”,不引入更新容器。本方案条件可行:跨公网检查远端摘要无法保证每次亚秒级完成;当前单实例网关重建也不能保证零停机或在途请求无损。\n\n 本次交付仅为会话草案与实现契约,没有写入文件、运行测试或操作两台异地 VPS。\n 对于正常运行的宿主机与 . Topic tags: general web, llm, agents, ai, workflow. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with
Automatiske Docker-opdateringer kan bygges uden en særskilt opdateringscontainer. Den foreslåede model kombinerer en timer på værten, fastlåsning af images med digest, vedvarende status for hver opdatering og rollback til et lokalt gemt image.
Det er dog vigtigt at skelne mellem en plan og en afprøvet løsning. Forslaget er endnu ikke installeret eller testet på de to VPS’er. Og med én gatewayinstans kan man ikke love nul nedetid eller, at alle igangværende forespørgsler overlever et skift.
v plus hoved- og underversion, eksempelvis v3.12. Den udgiver taggene latest, 3.12, v3.12 og en kort commit-SHA, men opretter ikke automatisk et versionsalias som v3.x. Arbejdsgangen er sat op til fire arkitekturer; det beviser ikke i sig selv, at en bestemt udgivelse er bygget til dem alle. UdgivelsesarbejdsgangForslaget ændrer ikke mailen, synkroniserer ikke kontotilstand, opgraderer ikke afhængigheder og indfører ikke fjernkildekode. Det lover heller ikke et præcist samtidigt skift på begge servere. En egentlig tabsfri overgang ville kræve særskilt design med to instanser, skift af indgangspunkt og dræning af forbindelser.
Den planlagte indgang er scripts/auto-update.sh, men scriptet er endnu ikke oprettet. Værten skal som minimum have Bash, Docker Engine, Compose-plugin, curl, jq, flock og Skopeo til at læse image-manifester uden først at hente image-lagene. De konkrete versioner og Linux-distributioner skal kontrolleres under implementeringen.
Scriptet skal køre på værten under en beskyttet konto og tale direkte med den lokale Docker-installation. Docker-socketen og registeradgangskoder skal ikke monteres i en container. Kontoen har stadig Docker-administratorrettigheder; fraværet af et socket-mount fjerner ikke den risiko.
Et tag som latest kan pege på forskellige images over tid. Derfor bruges det kun til at finde ud af, om der er kommet en ny udgave. Selve deploymenten skal altid referere til image-adressen med en fast digest. Compose understøtter image-referencer med digest. 1
Hold styr på tre forskellige identifikatorer hver for sig: digest for det flerarkitekturelle indeks, digest for platformens manifest og Docker-image-ID’et lokalt. De er ikke direkte sammenlignelige.
Før et skift skal scriptet gemme det kørende containers image-ID under et særligt lokalt tag og kontrollere, at den gamle tjeneste er sund. Så afhænger rollback ikke af, at netværket stadig virker, eller at det gamle image kan hentes igen.
Opdateringsstatus skal gemmes som data, der parses strengt — aldrig som tekst, der eksekveres. Skriv først til en midlertidig fil i samme mappe, byt derefter filen atomisk, og sørg for, at både fil og mappe bliver synkroniseret til disk, når status er kritisk. Et atomisk filskift alene er ikke garanti for, at data overlever strømsvigt.
Skitse til centrale kommandoer:
# Værdierne skal komme fra en valideret konfiguration, som almindelige brugere ikke kan ændre.
exec 9>"$LOCK_FILE"
flock -n 9 || exit 0
# Læs kun manifestet. Verificér først Skopeos autentificering og håndtering af rå manifester.
timeout --kill-after=2s 15s \
skopeo inspect --authfile "$DOCKER_CONFIG/config.json" \
--raw "docker://$TRACK_IMAGE" \
</dev/null >"$MANIFEST_TMP"
# Kontrollér afslutningsstatus før digesten beregnes.
# Brug aldrig delvist output fra et mislykket kald.
# NEW_REF skal være en valideret adresse af formen ghcr.io/repo@sha256:...
timeout --kill-after=5s 600s \
docker pull "$NEW_REF" </dev/null
# Transaktionen skal være gemt, og det lokale rollback-image kontrolleret på forhånd.
APP_IMAGE="$NEW_REF" timeout --kill-after=5s 60s \
docker compose --project-name "$PROJECT" \
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \
up -d --no-deps --no-build --pull never app </dev/null
# Ved fejl: OLD_LOCAL_REF er et gemt og kontrolleret lokalt tag for det gamle image.
APP_IMAGE="$OLD_LOCAL_REF" timeout --kill-after=5s 60s \
docker compose --project-name "$PROJECT" \
--project-directory "$DEPLOY_DIR" -f "$COMPOSE_FILE" \
up -d --no-deps --no-build --pull never app </dev/null
Kommandoen retter sig kun mod gatewaytjenesten. --no-build, --no-deps og --pull never begrænser henholdsvis bygning, opstart af afhængige tjenester og ekstra image-hentning under genskabelsen. 2 Der skal ikke køres en genstart af hele Compose-projektet, slettes forældreløse tjenester eller stoppes tjenester uden for gatewayen.
En timeout betyder ikke nødvendigvis, at Docker er færdig med en baggrundsoperation. Efter timeout skal scriptet først undersøge den faktiske containertilstand og koordinere en eventuel gendannelse. Det må ikke starte et konkurrerende skift med det samme. Tvungen afslutning eller strømsvigt kan heller ikke håndteres alene med en exit-trap; næste opstart skal prioritere den gemte transaktion.
Et muligt startpunkt er et sundhedsvindue på 60 sekunder, højst ét sekunds forbindelsestid, højst tre sekunder pr. forespørgsel, to sekunder mellem kontrolforsøg og tre succeser i træk. Det er forslag til konfiguration, ikke målte resultater.
Kun image-kilden skal ændres i den eksterne deploymentkopi. Bevar porte, hukommelsesgrænser, logning, miljøvariabler, skrivebeskyttede konfigurationsmounts og mailkonfiguration. Den lokale udviklingsfil docker-compose.yml skal ikke overskrives. Den relevante del er gatewayens build-felt.
services:
app:
image: "${APP_IMAGE:?Der skal angives en fastlåst image-reference}"
pull_policy: never
Det er kun et udsnit, ikke en komplet Compose-fil. Den eksterne deploymentmappe skal indeholde resten af tjenestedefinitionen, og gatewayens build-felt skal fjernes. Den gemte reference skal være en godkendt digest eller et lokalt rollback-tag — ikke latest, som kan ændre sig ved en manuel genstart.
Kontrollér også Compose-projektnavnet på hver VPS. Hvis navnet er forkert, kan Compose oprette et nyt netværk og ændre forbindelsen til mailtjenesten. Antag ikke, at det lokale projektnavn er det samme på begge servere.
Gennemgå de faktiske miljøværdier på serverne. Compose-interpolation og miljøet inde i containeren er ikke det samme; en variabel, der findes i en miljøfil, er ikke automatisk tilgængelig for programmet. Den nuværende konfiguration aktiverer to eksperimentelle funktioner, mens projektets faktuelle afgrænsning angiver, at de som udgangspunkt er slået fra. Opgaven ændrer ikke disse valg; værdierne på serverne skal kontrolleres frem for at blive udledt af den lokale fil. Eksperimentelle flag, projektets faktuelle afgrænsning
Fjernserverne skal kun modtage deployment- og kørselskonfiguration samt de færdigbyggede images. De behøver hverken en kildekodecheckout eller skriveadgang til kodearkivet. Hvis en opdatering kræver en inkompatibel konfigurationsændring, må den ikke rulles ud automatisk, før der findes en løsning, der kan rulles tilbage.
Til et privat GitHub Container Registry (GHCR) anbefales et personligt adgangstoken af den klassiske type med læserettigheden read:packages. Kontrollér, at kontoen faktisk har adgang til pakken, og gennemfør eventuel SSO-godkendelse, hvis organisationen kræver det. Giv ikke VPS’erne CI-tokenet til at skrive pakker, og giv dem ikke adgang til at ændre eller slette pakker eller kildekode. 9
Brug et separat, tilbagekaldeligt læsetoken til hver VPS, og log ind via standard input, så tokenet ikke ender i kommandolinjeargumenter eller auditlog. Gem Docker-loginoplysninger i en mappe, som kun administratoren kan læse, og sørg for, at opdateringsscriptet og manifestværktøjet bruger den samme, kontrollerede autentificering. Tokenet skal aldrig gives videre til gatewayen eller mailcontaineren. Ved en autentificeringsfejl stopper opdateringen; den nuværende tjeneste skal fortsætte.
Systemd er den foreslåede scheduler. En mulig serviceenhed og timerenhed ser sådan ud; stier og brugerkonto er eksempler og er ikke installeret:
[Unit]
Description=Aurora – oprindelig image-opdatering og gendannelse
After=docker.service network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=root
WorkingDirectory=/opt/aurora
Environment=DOCKER_CONFIG=/etc/aurora-updater/docker
ExecStart=/opt/aurora/scripts/auto-update.sh
TimeoutStartSec=20min
UMask=0077
Nice=10
IOSchedulingClass=idle
NoNewPrivileges=yes
StandardOutput=journal
StandardError=journal
[Unit]
Description=Aurora – planlagt kontrol af image-opdateringer
[Timer]
OnBootSec=1min
OnUnitInactiveSec=5min
RandomizedDelaySec=30s
AccuracySec=1s
Unit=aurora-update.service
[Install]
WantedBy=timers.target
Installer først afhængigheder, kontrollér konfigurationen, opret et sundt rollback-anker og gennemfør en øvelse. Timeren skal først aktiveres, når det er godkendt. Kør de to servere forskudt, så de ikke henter images eller møder en fejl på samme tid.
Timeren giver gradvis synkronisering, ikke et atomisk skift. Hvis én server ruller tilbage, bør den blive på den gamle version, indtil en ny, godkendt digest findes. Forsøg ikke at tvinge versionslighed ved gentagne gange at udrulle et image, der allerede har fejlet. Lavere prioritet for opdateringsscriptet garanterer heller ikke, at Docker-daemonens CPU-belastning under udpakning begrænses; det skal testes på serverne.
Her betyder “stille”, at scriptet ikke skriver forretningsoutput eller opdateringshistorik, når intet ændrer sig. Systemd kan stadig logge, at tjenesten er startet og afsluttet.
Log UTC-tidspunkt, serveridentitet, transaktions-ID, gamle og nye digests, trin, varighed, sundhedsresultat og rollback-resultat. Log aldrig adgangskoder, hele miljøer, mailkonti eller svarindhold.
Et muligt forslag til logrotation er ugentlig rotation, ekstra rotation ved 1 MB og komprimeret opbevaring af 26 arkiver. Det er en politik, der skal godkendes — ikke en ændring af værtens generelle logindstillinger.
Oprydning må kun slette historiske images, som opdateringsværktøjet selv har registreret som sine. Den skal bruge samme transaktionslås og må ikke foretage en global oprydning af images eller volumes. Beskyt altid den aktuelle version, den senest fungerende version og images, der indgår i en uafsluttet transaktion. Før sletning skal værktøjet desuden kontrollere, at ingen eksisterende container eller andre tags bruger imaget.
Et muligt forslag er at fjerne værktøjets eget retention-tag på historiske images, der er ældre end 14 dage, og derefter forsøge en almindelig, ikke-tvangsmæssig sletning. Hvis Docker afviser sletningen, skal imaget bevares og hændelsen logges. Et dangling-image er ikke automatisk overflødigt — det kan være manuelt bevaret til rollback. Er der for lidt diskplads før en hentning, skal opdateringen opgives frem for at slette det eneste rollback-anker.
Vigtige godkendelsestests er, at en uændret digest ikke udløser laghentning, genskabelse eller opdateringslog; at mailcontainerens ID, starttid og eksisterende mails er uændrede; og at et dårligt image, et ikke-200-svar, en sundhedstimeout eller en genskabelsesfejl fører til rollback. Test også rollback uden adgang til GHCR, afbryd værktøjet på hvert kritisk transaktionstrin, og kontrollér, at næste kørsel genoptager sikkert uden at prøve en karantænesat digest igen. Endelig skal tests bekræfte, at der ikke bygges images, monteres Docker-sockets eller lækkes tokens, at kun én opdatering kan køre ad gangen, og at oprydning ikke fjerner beskyttede images.
Konklusion: En værtbaseret timer med digest-fastlåsning, vedvarende transaktionsstatus og lokal rollback er en fornuftig retning, hvis en kort afbrydelse af gatewayen accepteres. Behandl kontrol af nye versioner som et performance-mål, ikke et løfte om svar under ét sekund. Uden kvitteringer fra de to VPS’er er kompatibilitet, hastighed og rollback endnu ikke dokumenteret. Indtil videre er der kun leveret et forslag — ingen filer er ændret, ingen tests er kørt, og ingen eksisterende plan er blevet overskrevet.
Studio Global AI
This page includes a source-backed answer you can continue inside Studio Global.
Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer.
Anbefalingen er en timer på værten, faste image digests og en lokal kopi af det senest godkendte image — uden en særskilt opdateringscontainer. Opdater kun gatewaytjenesten, og lad mailcontaineren være urørt. Et mislykket skift skal kunne rulles tilbage uden at hente det gamle image fra nettet.
Løsningen er betinget: En ekstern kontrol kan ikke garanteres at tage under ét sekund, og genstart af én gatewayinstans giver hverken nul nedetid eller garanti for, at igangværende forespørgsler overlever.