From fb5a9d9507a1858cdb12ebc541b676ddd8053914 Mon Sep 17 00:00:00 2001
From: RobMarkoski <robmarkoski@users.noreply.github.com>
Date: Tue, 16 Apr 2024 15:24:47 +0800
Subject: [PATCH] Update ZNC documentation in content.md for docker compose

Added an example Docker Compose for normal operation as well as first run configuration.

Added a Troubleshoot Section to include potential permission issues.

Additional changes

- Corrected headings levels.
---
 znc/content.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

diff --git a/znc/content.md b/znc/content.md
index bb7e79cca9ff..d201fb26ae5e 100644
--- a/znc/content.md
+++ b/znc/content.md
@@ -6,7 +6,7 @@ ZNC is an IRC network bouncer (BNC). It can detach the client from the actual IR
 
 [ZNC Wiki](http://znc.in/)
 
-# How to use this image
+## How to use this image
 
 ZNC in this image stores its configuration in `/znc-data`. If you have existing configuration, you can reuse it with `-v $HOME/.znc:/znc-data`. Alternatively, you can create a new config in a volume or in a local dir. The examples below assumes a volume named `znc-cfg`.
 
@@ -25,3 +25,58 @@ The port (12345 in the example above) should match the port you used during `--m
 If you use any external module, put the .cpp, .py or .pm file to `/znc-data/modules` (you may need to create that directory).
 
 This image contains the latest released version. If you want the bleeding edge (unstable) version, it's at [zncbouncer/znc-git](https://hub.docker.com/r/zncbouncer/znc-git).
+
+## Install using [`docker-compose`](https://github.com/docker/compose)
+
+Example `docker-compose.yml` for `znc`:
+
+```yaml
+  znc:
+    image: znc:latest
+    container_name: znc
+    volumes:
+      - /your/local/znc-data:/znc-data
+    ports:
+      - 12345:12345
+    restart: unless-stopped
+```
+
+Then run with `docker-compose up -d`, and when initialized go to `http://dockerhost:12345`
+
+### Running ZNC for first time (No config)
+
+If this is your first time running ZNC (and have no configuration file), use the following `docker-compose.yml`:
+
+```yaml
+  znc:
+    image: znc:latest
+    container_name: znc
+    volumes:
+      - /your/local/znc-data:/znc-data
+    ports:
+      - 12345:12345
+    restart: unless-stopped
+
+    #Additional settings required for first run
+    command: ["--makeconf"]
+    tty: true 
+    stdin_open: true
+```
+
+Next run the container with `docker-compose run`. This should then run you through the initial configuration setup. Once this is completed, stop the container using `docker-compose stop znc`. Remove the settings below `#Additional settings required for first run` and then recreate/start the container again using `docker-compose up -d`.
+
+## Troubleshooting
+
+If you get permission errors on the local volume set the uid and pid in the compose file as follows (where `1000` is your uid and `100` your gid):
+
+```yaml
+  znc:
+    image: znc:latest
+    container_name: znc
+    user: 1000:100 #User settings
+    volumes:
+      - /your/local/znc-data:/znc-data
+    ports:
+      - 12345:12345
+    restart: unless-stopped
+```
\ No newline at end of file