Nextcloud is the first consumer of two provisions at once: a database from the mesh's postgres and primary storage in a bucket from the mesh's own object store — which is how the arrangement being replaced ran it, minus the bundled MariaDB it no longer needs. Every credential in one env file the host writes; the manifest holds placeholders and the mesh holds nothing readable. Home automation runs on the machine's own network, because discovering devices is the point and a bridge would hide them — so nothing is published, the declared port is the bound port, and the rule set opens exactly it. The case MachineSide was corrected for, in the catalogue. Both pinned by real digests, resolved on this workstation today.
76 lines
2.1 KiB
JSON
76 lines
2.1 KiB
JSON
{
|
|
"module": "nextcloud",
|
|
"version": "1",
|
|
"requires": [
|
|
"postgres-database",
|
|
"s3-bucket"
|
|
],
|
|
"contributes": {
|
|
"postgres-database": {
|
|
"name": "nextcloud"
|
|
},
|
|
"s3-bucket": {
|
|
"bucket": "nextcloud"
|
|
}
|
|
},
|
|
"binds": {
|
|
"postgres-database": "/var/lib/nextcloud-module/database.json",
|
|
"s3-bucket": "/var/lib/nextcloud-module/store.json"
|
|
},
|
|
"secrets": {
|
|
"postgres-database": "/var/lib/nextcloud-module/database.secret",
|
|
"s3-bucket": "/var/lib/nextcloud-module/store.secret"
|
|
},
|
|
"own-secrets": {
|
|
"admin": "/var/lib/nextcloud-module/admin.secret"
|
|
},
|
|
"capabilities": [
|
|
"container-runtime"
|
|
],
|
|
"listens": [
|
|
{
|
|
"port": 80,
|
|
"protocol": "tcp",
|
|
"from": "mesh",
|
|
"why": "files and sync, over http; a public name is a route grant later"
|
|
}
|
|
],
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"path": "/var/lib/nextcloud-module",
|
|
"mode": "0700"
|
|
},
|
|
{
|
|
"id": "server-env",
|
|
"type": "file",
|
|
"path": "/var/lib/nextcloud-module/server.env",
|
|
"mode": "0600",
|
|
"content": "POSTGRES_HOST=${bound:postgres-database:at}:${bound:postgres-database:port}\nPOSTGRES_DB=nextcloud\nPOSTGRES_USER=${bound:postgres-database:as}\nPOSTGRES_PASSWORD=${secret:postgres-database}\nNEXTCLOUD_ADMIN_USER=admin\nNEXTCLOUD_ADMIN_PASSWORD=${secret:admin}\nOBJECTSTORE_S3_HOST=${bound:s3-bucket:at}\nOBJECTSTORE_S3_PORT=${bound:s3-bucket:port}\nOBJECTSTORE_S3_BUCKET=nextcloud\nOBJECTSTORE_S3_KEY=${bound:s3-bucket:as}\nOBJECTSTORE_S3_SECRET=${secret:s3-bucket}\nOBJECTSTORE_S3_SSL=false\nOBJECTSTORE_S3_USEPATH_STYLE=true\n"
|
|
},
|
|
{
|
|
"id": "html",
|
|
"type": "directory",
|
|
"path": "/services/nextcloud/html",
|
|
"mode": "0750",
|
|
"owner": "33:33"
|
|
},
|
|
{
|
|
"id": "server",
|
|
"type": "container",
|
|
"name": "nextcloud",
|
|
"image": "nextcloud@sha256:0b8261f6335af6b95264ce893b4d645857638e0fa151b5ba620f25f377318ae1",
|
|
"env-file": [
|
|
"/var/lib/nextcloud-module/server.env"
|
|
],
|
|
"ports": [
|
|
"80"
|
|
],
|
|
"volumes": [
|
|
"/services/nextcloud/html:/var/www/html"
|
|
]
|
|
}
|
|
]
|
|
}
|