Ship the Ops backstage 对象存储 page (browse / upload / move / delete / folder ops) backed by a new object-storage service + handler, with the shared storage client extended with List/Stat/Copy/Usage/DownloadURL so both MinIO and Aliyun providers cover the new surface. Add ForcePathStyle to the object-storage config and treat r2/s3/custom_s3 as external providers so Cloudflare R2 and other S3-compatibles can share the MinIO client path without spinning up the bundled MinIO. Also add CSV import/export + template download to the site-domain mappings page, raise gin MaxMultipartMemory to 8 MiB for the new multipart endpoints, register Ops swagger routes, and extend the descriptions-parity test to cover the ops router. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.2 KiB
geo-rankly offline package
This directory is self-contained. It deploys containers, not host binaries.
On a Docker host with Docker Compose v2:
bash deploy.sh compose
compose is the default, so this is equivalent:
bash deploy.sh
deploy.sh compose loads images.tar, creates .env from .env.example when missing, and starts the stack with:
docker compose -f docker-compose.yaml -f docker-compose.offline.yaml --env-file .env up -d
Object storage is selected from config.yaml / config.yml, with config.local.yaml / config.local.yml as an override:
object_storage.provider: minioorminodeploys MinIO andminio-initobject_storage.provider: aliyun,aliyun_oss,aliyun-oss,oss,r2,cloudflare_r2,s3,aws_s3, orcustom_s3skips MinIO and uses the external object storage config from the same config files
For Cloudflare R2, set object_storage.region: auto and object_storage.force_path_style: true.
Runtime services connect to Postgres through PgBouncer in session pooling mode. The one-shot migrate job still connects directly to postgres and monitoring-postgres so DDL and seed work do not go through the pooler.
On a k3s host:
bash deploy.sh k3s
This imports images.tar into k3s containerd and applies k3s/ with Kustomize.
Default ports are NAS-friendly:
- tenant web:
18080 - tenant API:
18081 - ops web:
18082 - ops API:
18090 - RabbitMQ management:
15673 - MinIO console:
19001
Edit .env before rerunning bash deploy.sh if you need real API keys, stronger secrets, or different ports.
For multi-container / multi-Pod login password encryption, put the same RSA private key in every replica's config override:
- tenant API: copy
config.local.yaml.exampletoconfig.local.yaml, then fillauth.password_cipher.private_key_pem - ops API: copy
ops-config.local.yaml.exampletoops-config.local.yaml, then fillauth.password_cipher.private_key_pem
Generate keys with:
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out login-password-rsa.pem
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ops-login-password-rsa.pem