A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go

remote at sign from tangled urls

evan.jarrett.net 4ac2b97c 53de92e5

verified
+39 -22
+2 -2
deploy/README.md
··· 485 485 486 486 ## Support 487 487 488 - - Documentation: https://tangled.org/@evan.jarrett.net/at-container-registry 489 - - Issues: https://tangled.org/@evan.jarrett.net/at-container-registry/issues 488 + - Documentation: https://tangled.org/evan.jarrett.net/at-container-registry 489 + - Issues: https://tangled.org/evan.jarrett.net/at-container-registry/issues 490 490 - Bluesky: @evan.jarrett.net
+3 -3
deploy/init-upcloud.sh
··· 24 24 25 25 # Configuration 26 26 ATCR_DIR="/opt/atcr" 27 - ATCR_REPO="https://tangled.org/@evan.jarrett.net/at-container-registry" # UPDATE THIS 27 + ATCR_REPO="https://tangled.org/evan.jarrett.net/at-container-registry" # UPDATE THIS 28 28 ATCR_BRANCH="main" 29 29 30 30 # Simple logging without colors (for cloud-init log compatibility) ··· 111 111 cd "$ATCR_DIR" 112 112 113 113 # Clone repository or create minimal structure 114 - if [ -n "$ATCR_REPO" ] && [ "$ATCR_REPO" != "https://tangled.org/@evan.jarrett.net/at-container-registry" ]; then 114 + if [ -n "$ATCR_REPO" ] && [ "$ATCR_REPO" != "https://tangled.org/evan.jarrett.net/at-container-registry" ]; then 115 115 log_info "Cloning ATCR repository..." 116 116 git clone -b "$ATCR_BRANCH" "$ATCR_REPO" . 117 117 else ··· 330 330 systemctl status atcr-hold - Check Hold status 331 331 332 332 Documentation: 333 - https://tangled.org/@evan.jarrett.net/at-container-registry 333 + https://tangled.org/evan.jarrett.net/at-container-registry 334 334 335 335 IMPORTANT: 336 336 - Edit /opt/atcr/.env with S3 credentials before starting!
+1 -1
deploy/upcloud/config.go
··· 13 13 ) 14 14 15 15 const ( 16 - repoURL = "https://tangled.org/@evan.jarrett.net/at-container-registry" 16 + repoURL = "https://tangled.org/evan.jarrett.net/at-container-registry" 17 17 repoBranch = "main" 18 18 privateNetworkCIDR = "10.0.1.0/24" 19 19 )
+17
deploy/upcloud/provision.go
··· 906 906 answer := strings.TrimSpace(strings.ToLower(scanner.Text())) 907 907 if answer != "" && answer != "y" && answer != "yes" { 908 908 fmt.Printf(" Skipped\n") 909 + // Still update the remote reference so next provision sees an accurate diff 910 + if err := writeRemoteCloudInit(ip, localScript); err != nil { 911 + fmt.Printf(" WARNING: could not update remote cloud-init reference: %v\n", err) 912 + } 909 913 return nil 910 914 } 911 915 ··· 918 922 } 919 923 920 924 fmt.Printf(" %s: cloud-init complete\n", name) 925 + 926 + // Write the script to the remote path so next provision can detect real diffs 927 + if err := writeRemoteCloudInit(ip, localScript); err != nil { 928 + fmt.Printf(" WARNING: could not update remote cloud-init reference: %v\n", err) 929 + } 921 930 return nil 922 931 } 932 + 933 + // writeRemoteCloudInit writes the local cloud-init script to the remote server 934 + // so that subsequent provision runs can accurately detect real changes. 935 + func writeRemoteCloudInit(ip, script string) error { 936 + cmd := fmt.Sprintf("cat > %s << 'CLOUDINITEOF'\n%sCLOUDINITEOF", cloudInitPath, script) 937 + _, err := runSSH(ip, cmd, false) 938 + return err 939 + }
+5 -5
docs/appview.md
··· 57 57 58 58 ```bash 59 59 # Clone repository 60 - git clone https://tangled.org/@evan.jarrett.net/at-container-registry 60 + git clone https://tangled.org/evan.jarrett.net/at-container-registry 61 61 cd atcr 62 62 63 63 # Copy and configure environment ··· 274 274 - Log rotation 275 275 - Monitoring 276 276 277 - See **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide. 277 + See **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide. 278 278 279 279 ### Quick Production Checklist 280 280 ··· 293 293 294 294 ## Configuration Files Reference 295 295 296 - - **[.env.appview.example](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/.env.appview.example)** - All available environment variables with documentation 297 - - **[deploy/.env.prod.template](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template 298 - - **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide 296 + - **[.env.appview.example](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/.env.appview.example)** - All available environment variables with documentation 297 + - **[deploy/.env.prod.template](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template 298 + - **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide 299 299 - **[Hold Service Documentation](https://atcr.io/r/evan.jarrett.net/atcr-hold)** - Storage backend setup
+6 -6
docs/hold.md
··· 62 62 63 63 ```bash 64 64 # Clone repository 65 - git clone https://tangled.org/@evan.jarrett.net/at-container-registry 65 + git clone https://tangled.org/evan.jarrett.net/at-container-registry 66 66 cd atcr 67 67 68 68 # Copy and configure environment ··· 355 355 - Systemd service files 356 356 - Monitoring 357 357 358 - See **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide. 358 + See **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** for comprehensive production deployment guide. 359 359 360 360 ### Quick Production Checklist 361 361 ··· 375 375 376 376 ## Configuration Files Reference 377 377 378 - - **[.env.hold.example](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/.env.hold.example)** - All available environment variables with documentation 379 - - **[deploy/.env.prod.template](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template (includes both AppView and Hold) 380 - - **[deploy/README.md](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide 378 + - **[.env.hold.example](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/.env.hold.example)** - All available environment variables with documentation 379 + - **[deploy/.env.prod.template](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/.env.prod.template)** - Production configuration template (includes both AppView and Hold) 380 + - **[deploy/README.md](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/deploy/README.md)** - Production deployment guide 381 381 - **[AppView Documentation](https://atcr.io/r/evan.jarrett.net/atcr-appview)** - Registry API server setup 382 - - **[BYOS Architecture](https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/docs/BYOS.md)** - Bring Your Own Storage technical design 382 + - **[BYOS Architecture](https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/docs/BYOS.md)** - Bring Your Own Storage technical design
+1 -1
pkg/appview/config.go
··· 225 225 // Post-load: fixed values 226 226 cfg.Auth.TokenExpiration = 5 * time.Minute 227 227 cfg.Auth.ServiceName = deriveServiceName(cfg) 228 - cfg.CredentialHelper.TangledRepo = "https://tangled.org/@evan.jarrett.net/at-container-registry" 228 + cfg.CredentialHelper.TangledRepo = "https://tangled.org/evan.jarrett.net/at-container-registry" 229 229 230 230 // Post-load: CompanyName defaults to ClientName 231 231 if cfg.Legal.CompanyName == "" {
+1 -1
pkg/appview/public/static/install.ps1
··· 10 10 11 11 # Fallback configuration (used if API is unavailable) 12 12 $FallbackVersion = "v0.0.1" 13 - $FallbackTangledRepo = "https://tangled.org/@evan.jarrett.net/at-container-registry" 13 + $FallbackTangledRepo = "https://tangled.org/evan.jarrett.net/at-container-registry" 14 14 15 15 Write-Host "ATCR Credential Helper Installer for Windows" -ForegroundColor Green 16 16 Write-Host ""
+1 -1
pkg/appview/public/static/install.sh
··· 17 17 18 18 # Fallback configuration (used if API is unavailable) 19 19 FALLBACK_VERSION="v0.0.1" 20 - FALLBACK_TANGLED_REPO="https://tangled.org/@evan.jarrett.net/at-container-registry" 20 + FALLBACK_TANGLED_REPO="https://tangled.org/evan.jarrett.net/at-container-registry" 21 21 22 22 # Detect OS and architecture 23 23 detect_platform() {
+1 -1
pkg/appview/templates/pages/install.html
··· 121 121 </div> 122 122 123 123 <h3 class="text-lg font-medium mb-3">Still having issues?</h3> 124 - <p>Check the <a href="https://tangled.org/@evan.jarrett.net/at-container-registry/blob/main/INSTALLATION.md" class="link link-primary">full documentation</a> or <a href="https://tangled.org/@evan.jarrett.net/at-container-registry/issues" class="link link-primary">open an issue</a>.</p> 124 + <p>Check the <a href="https://tangled.org/evan.jarrett.net/at-container-registry/blob/main/INSTALLATION.md" class="link link-primary">full documentation</a> or <a href="https://tangled.org/evan.jarrett.net/at-container-registry/issues" class="link link-primary">open an issue</a>.</p> 125 125 </section> 126 126 127 127 <section>
+1 -1
pkg/appview/templates/pages/learn-more.html
··· 164 164 </p> 165 165 <div class="flex flex-col sm:flex-row items-center justify-center gap-4"> 166 166 <a href="/install" class="btn btn-primary btn-lg">Get Started</a> 167 - <a href="https://tangled.org/@evan.jarrett.net/at-container-registry" target="_blank" rel="noopener" class="btn btn-ghost btn-lg"> 167 + <a href="https://tangled.org/evan.jarrett.net/at-container-registry" target="_blank" rel="noopener" class="btn btn-ghost btn-lg"> 168 168 {{ icon "github" "size-5 mr-2" }} 169 169 View Source 170 170 </a>