Files
nextcloud/community-containers/readme.md
T
Nicolas Binette bb7d32a2f2 Add AzuraCast community container (#8176)
* Add AzuraCast community container

Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* Update Caddy readme to mention AzuraCast

Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* azuracast: consolidate storage/* volumes into single storage volume

Replace seven granular mounts under /var/azuracast/storage with a single
nextcloud_aio_azuracast_storage volume, matching AzuraCast's official
docker-compose layout. Remove nextcloud_aio_azuracast_uploads from
backup_volumes (media files are captured via stations and AzuraCast's
own backup archives in /var/azuracast/backups).

Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* azuracast: change HTTP/HTTPS ports to 10080/10443, expose on host

Use ports recommended by AzuraCast docs for reverse proxy deployments.
Expose port 10080 (HTTP) with %APACHE_IP_BINDING% following the vaultwarden
pattern, and port 10443 (HTTPS) on all interfaces for direct access.
Update readme accordingly.

Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* azuracast: replace shared volume with %NEXTCLOUD_MOUNT%, document filesystem sharing

Replace the named volume nextcloud_aio_azuracast_shared with the AIO-native
%NEXTCLOUD_MOUNT% mechanism. The volume is silently skipped if NEXTCLOUD_MOUNT
is not configured in AIO.

Update readme.md:
- Document NEXTCLOUD_MOUNT as the advanced file sharing approach, with setup
  instructions and a comparison to the SFTP approach
- Clarify default access behavior: files (mode 644) are world-readable by both
  processes; some AzuraCast directories (mode 700) require intervention
- Document POSIX ACL commands for unlocking read-only or bidirectional access
  on specific paths, with a note that they must be re-run after structural
  changes by AzuraCast
- Minor wording and formatting improvements throughout

Tested on a live AzuraCast instance: rename and bidirectional move confirmed
working after ACL application; containers start correctly without UMASK override.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* Update community-containers/azuracast/azuracast.json

Do not expose internal HTTP port 10080 on host.

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* azuracast: add to community containers overview diagram

Add AzuraCast entry to the Media group of the mermaid overview
diagram in community-containers/readme.md, as requested by szaimen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Nicolas Binette <biguenique@nuee.cc>

* fix the json

Signed-off-by: Simon L. <szaimen@e.mail.de>

* Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

* Apply suggestion from @szaimen

Signed-off-by: Simon L. <szaimen@e.mail.de>

---------

Signed-off-by: Nicolas Binette <biguenique@nuee.cc>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Simon L. <szaimen@e.mail.de>
2026-06-16 15:47:15 +02:00

5.4 KiB

Community containers

This directory features containers that are built for AIO which allows to add additional functionality very easily.

Disclaimers

All containers that are in this directory are community maintained so the responsibility is on the community to keep them updated and secure. There is no guarantee that this will be the case in the future.

Overview

flowchart TD
    %% ── Styles ───────────────────────────────────────────────────────────────────
    classDef community fill:#FDEBD0,stroke:#E67E22,color:#222
    classDef group     fill:#FEF9E7,stroke:#F39C12,color:#333

    subgraph COMM_AI["🤖 AI & Language"]
        LAI(["🧠  Local AI\nPrivate AI assistant"]):::community
        LT(["✏️  LanguageTool\nSpell & grammar check"]):::community
        LTRANS(["🌐  LibreTranslate\nTranslation engine"]):::community
        FACE(["🙂  FaceRecognition\nPhoto AI processor"]):::community
    end

    subgraph COMM_BACKUP["💾 Backup & Storage"]
        BV(["📦  Borgbackup Viewer\nBrowse backups"]):::community
        CALB(["📅  CalCardBackup\nCalendar/Contacts backup"]):::community
        MINIO(["🗃️  MinIO\nS3-compatible storage"]):::community
        SMB(["📂  SMB Server\nWindows file sharing"]):::community
    end

    subgraph COMM_EXTRA["🌟 Extra Services"]
        HA(["🏠  Home Assistant\nHome automation"]):::community
        STLW(["📧  Stalwart\nMail server"]):::community
        NOCO(["🗂️  NocoDB\nNo-code database"]):::community
        JSER(["🎯  Jellyseerr\nMedia request manager"]):::community
        NOTIF(["📣  Notifications\nExternal push notify"]):::community
    end

    subgraph COMM_MEDIA["🎬 Media"]
        PLEX(["🎞️  Plex\nMedia Server"]):::community
        JELLY(["🎬  Jellyfin\nMedia Server"]):::community
        DLNA(["📡  DLNA\nMedia Streaming"]):::community
        MEMTR(["📸  Memories\nVideo Transcoder"]):::community
        MKV(["💿  MakeMKV\nBlu-ray / DVD rip"]):::community
        AZURA(["📻  AzuraCast\nRadio Station Server"]):::community
    end

    subgraph COMM_MONITOR["📊 Monitoring & Infra"]
        GLAN(["📈  Glances\nSystem monitoring"]):::community
        EXP(["📊  Nextcloud Exporter\nPrometheus metrics"]):::community
        SCRU(["💽  Scrutiny\nDisk health (S.M.A.R.T.)"]):::community
        CMGMT(["🐳  Container Mgmt\nDocker web console"]):::community
    end

    subgraph COMM_SEC["🔒 Security & Network"]
        F2B(["🚫  Fail2ban\nBrute-force protection"]):::community
        PIH(["🕳️  Pi-hole\nAd & DNS blocker"]):::community
        VW(["🔐  Vaultwarden\nPassword Manager"]):::community
        LDAP(["👥  LLDAP\nLight LDAP / Users"]):::community
        CADDY(["🌐  Caddy\nReverse Proxy + Geoblocking"]):::community
        NPMPLUS(["🌐  NPMplus\nNginx Proxy Manager"]):::community
    end

How to use this?

Starting with v11 of AIO, the management of Community Containers is done via the AIO interface (it is the last section in the AIO interface, so only visible if you scroll down).

⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because some containers are not compatible with each other and more.

How to add containers?

Simply submit a PR by creating a new folder in this directory: https://github.com/nextcloud/all-in-one/tree/main/community-containers with the name of your container. It must include a json file with the same name and with correct syntax and a readme.md with additional information. You might get inspired by caddy, fail2ban, local-ai, libretranslate, plex, pi-hole or vaultwarden (subfolders in this directory). For a full-blown example of the json file, see https://github.com/nextcloud/all-in-one/blob/main/php/containers.json. The json-schema that it validates against can be found here: https://github.com/nextcloud/all-in-one/blob/main/php/containers-schema.json.

Is there a list of ideas for new community containers?

Yes, see this list for already existing ideas for new community containers. Feel free to pick one up and add it to this folder by following the instructions above.

How to remove containers from AIOs stack?

You can remove containers now via the web interface.

After removing the containers, there might be some data left on your server that you might want to remove. You can get rid of the data by first running sudo docker rm nextcloud-aio-container1, (adjust container1 accordingly) per community-container that you removed. Then run sudo docker image prune -a in order to remove all images that are not used anymore. As last step you can get rid of persistent data of these containers that is stored in volumes. You can check if there is some by running sudo docker volume ls and look for any volume that matches the ones that you removed. If so, you can remove them with sudo docker volume rm nextcloud_aio_volume-id (of course you need to adjust the volume-id). Please note: If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management