diff --git a/manual-install/community-compose.yml b/manual-install/community-compose.yml new file mode 100644 index 00000000000..ab5dc7a59e2 --- /dev/null +++ b/manual-install/community-compose.yml @@ -0,0 +1,99 @@ +services: + nextcloud-aio-local-ai: + image: szaimen/aio-local-ai:v2 + expose: "8080" + restart: unless-stopped + environment: + - "TZ=${TIMEZONE}" + - MODELS_PATH=/models + volumes: + - nextcloud_aio_localai_models:/models + - nextcloud_aio_localai_images:/tmp/generated/images/ + - ${NEXTCLOUD_DATADIR}:/nextcloud:ro + profiles: + - local-ai + networks: + - nextcloud-aio + cap_drop: + - NET_RAW + + nextcloud-aio-caddy: + image: szaimen/aio-caddy:v2 + expose: "443" + restart: unless-stopped + ports: + - 443:443/tcp + - 443:443/udp + environment: + - "TZ=${TIMEZONE}" + - "NC_DOMAIN=${NC_DOMAIN}" + - "APACHE_PORT=${APACHE_PORT}" + volumes: + - nextcloud_aio_caddy:/data + - "${NEXTCLOUD-DATADIR}:/nextcloud:ro" + profiles: + - caddy + networks: + - nextcloud-aio + cap_drop: + - NET_RAW + + nextcloud-aio-dlna: + image: thanek/nextcloud-dlna + network_mode: host + restart: unless-stopped + depends_on: + - nextcloud-aio-database + environment: + - "NC_DOMAIN=${NC_DOMAIN}" + - NC_PORT=443 + - NEXTCLOUD_DLNA_SERVER_PORT=9999 + - NEXTCLOUD_DLNA_FRIENDLY_NAME=nextcloud-aio + - NEXTCLOUD_DATA_DIR=/data + - NEXTCLOUD_DB_TYPE=postgres + - NEXTCLOUD_DB_HOST=nextcloud-aio-database + - NEXTCLOUD_DB_PORT=5432 + - NEXTCLOUD_DB_NAME=nextcloud_database + - NEXTCLOUD_DB_USER=oc_nextcloud + - "NEXTCLOUD_DB_PASS=${DATABASE_PASSWORD}" + volumes: + - ${NEXTCLOUD_DATADIR}:/data:ro + profiles: + - dlna + cap_drop: + - NET_RAW + + nextcloud-aio-facerecognition: + image: matiasdelellis/facerecognition-external-model:v1 + expose: "5000" + restart: unless-stopped + environment: + - "TZ=${TIMEZONE}" + - API_KEY=some-super-secret-api-key + - FACE_MODEL=3 + aio_variables: + - nextcloud_memory_limit=2048M + profiles: + - facerecognition + networks: + - nextcloud-aio + cap_drop: + - NET_RAW + + nextcloud-aio-jellyfin: + image: jellyfin/jellyfin + network_mode: host + restart: unless-stopped + environment: + - "TZ=${TIMEZONE}" + volumes: + - nextcloud_aio_jellyfin:"/config" + - ${NEXTCLOUD_DATADIR}:/media:ro + - ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:ro + devices: + - "/dev/dri" + profiles: + - jellyfin + cap_drop: + - NET_RAW +# TODO: inject post run commands diff --git a/manual-install/latest.yml b/manual-install/latest.yml index e5d876ca12d..13e8642d691 100644 --- a/manual-install/latest.yml +++ b/manual-install/latest.yml @@ -1,3 +1,6 @@ +include: + - community-compose.yml + services: nextcloud-aio-apache: depends_on: @@ -98,6 +101,9 @@ services: nextcloud-aio-imaginary: condition: service_started required: false + nextcloud-aio-docker-socket-proxy: + condition: service_started + required: false image: nextcloud/aio-nextcloud:latest init: true expose: @@ -375,6 +381,23 @@ services: cap_drop: - NET_RAW + nextcloud-aio-docker-socket-proxy: + image: nextcloud/aio-docker-socket-proxy + restart: unless-stopped + init: true + expose: + - "2375" + environment: + - "TZ=${TIMEZONE}" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + profiles: + - docker-socket-proxy + networks: + - nextcloud-aio + cap_drop: + - NET_RAW + nextcloud-aio-whiteboard: image: nextcloud/aio-whiteboard:latest init: true diff --git a/manual-install/readme.md b/manual-install/readme.md index 26aaabf1435..3ad4cf27dd5 100644 --- a/manual-install/readme.md +++ b/manual-install/readme.md @@ -6,12 +6,13 @@ You can run the containers that are build for AIO with docker-compose. This come - You can run it without a container having access to the docker socket - You can modify all values on your own - You can run the containers with docker swarm +- You can run it entirely offline or in air-gapped environment ### Disadvantages - You lose the AIO interface - You lose update notifications and automatic updates - You lose all AIO backup and restore features -- You lose all community containers: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers +- You lose some community containers: https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers - **You need to know what you are doing, especially when modifying the compose.yaml file** - For updating, you need to strictly follow the at the bottom described update routine - Probably more @@ -30,9 +31,9 @@ Now copy the provided yaml file to a compose.yaml file by running `cp latest.yml Now you should be ready to go with `sudo docker compose up`. ## Docker profiles -The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, whiteboard, talk-recording, clamav, imaginary or fulltextsearch use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64). +The default profile of `latest.yml` only provide the minimum necessary services: nextcloud, database, redis and apache. To get optional services collabora, talk, whiteboard, talk-recording, clamav, imaginary, fulltextsearch or docker-socket-proxy use additional arguments for each of them, for example `--profile collabora`. (Note: there is no clamav image for arm64). For community containers, additional profile flags are required, such as local-ai, caddy, dlna, facerecognition, jellyfin. -For a complete all-in-one with collabora use `sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard up`. (Note: there is no clamav image for arm64). +For a complete all-in-one with collabora use `sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard --profile docker-socket-proxy --profile caddy --profile dlna --profile facerecognition --profile jellyfin --profile local-ai up`. (Note: there is no clamav image for arm64). ## How to update? Since the AIO containers may change in the future, it is highly recommended to strictly follow the following procedure whenever you want to upgrade your containers.