diff --git a/README.md b/README.md index 9e582d6..497c4dd 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,7 @@ ScaleTail provides ready-to-run [Docker Compose](https://docs.docker.com/compose | 🗃️ **Vaultwarden** | An unofficial Bitwarden server implementation written in Rust. | [Details](services/vaultwarden) | | ✅ **Vikunja** | A self-hosted task and project management platform with projects, reminders, labels, recurring tasks, and collaboration features. | [Details](services/vikunja) | | 💸 **Wallos** | An open-source, self-hostable web app to track and manage your recurring subscriptions and expenses, with multi-currency support, customizable categories, and statistics. | [Details](services/wallos) | +| 📚 **XWiki** |XWiki offers a generic platform for developing projects and collaborative applications using the wiki paradigm.|[Details](services/xwiki)| ### 📊 Dashboards and Visualization @@ -252,8 +253,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod - - + + - - - + + + - - + + - - + + + + + - - - - + +
crypt0rr @@ -282,13 +283,6 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod michaelhodges - - LaijieJi -
- LaijieJi -
-
adamsthws @@ -296,8 +290,6 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod adamsthws
theryukverse @@ -305,6 +297,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod theryukverse
KhaaL @@ -320,10 +314,17 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod - - jpmurray + + onlykshitij
- jpmurray + onlykshitij +
+
+ + LaijieJi +
+ LaijieJi
@@ -340,8 +341,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod mikkotor
NI-R0 @@ -384,8 +385,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod pjv
wedge22 @@ -393,6 +394,13 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod wedge22 + + jpmurray +
+ jpmurray +
+
Jacob-JA-Shanks @@ -421,6 +429,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod dfilvtov
cdkooistra @@ -428,8 +438,6 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod cdkooistra
Aurorainic @@ -458,8 +466,8 @@ A huge thank you to all our contributors! ScaleTail wouldn’t be what it is tod orchard0
diff --git a/services/xwiki/.env b/services/xwiki/.env new file mode 100644 index 0000000..c5af418 --- /dev/null +++ b/services/xwiki/.env @@ -0,0 +1,30 @@ +#version=1.1 +#URL=https://github.com/tailscale-dev/ScaleTail +#COMPOSE_PROJECT_NAME= # Optional: only use when running multiple deployments on the same infrastructure. + +# Service Configuration +SERVICE=xwiki # Service name (e.g., adguard). Used as hostname in Tailscale and for container naming (app-${SERVICE}). +IMAGE_URL=xwiki:stable-mariadb-tomcat # Docker image URL from container registry (e.g., adguard/adguard-home). + +# Network Configuration +SERVICEPORT=80 # Port to expose to local network. Uncomment the "ports:" section in compose.yaml to enable. +DNS_SERVER=9.9.9.9 # Preferred DNS server for Tailscale. Uncomment the "dns:" section in compose.yaml to enable. + +# Tailscale Configuration +TS_AUTHKEY= # Auth key from https://tailscale.com/admin/authkeys. See: https://tailscale.com/kb/1085/auth-keys#generate-an-auth-key for instructions. + +# Time Zone setting for containers +TZ=Europe/Amsterdam # See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + +# Optional Service variables +# PUID=1000 + + +#EXAMPLE_VAR="Environment varibale" + +# Default environment values +XWIKI_VERSION=18.2.1 +DB_USER=xwiki +DB_PASSWORD=xwiki +DB_DATABASE=xwiki +MARIADB_ROOT_PASSWORD=xwiki diff --git a/services/xwiki/README.md b/services/xwiki/README.md new file mode 100644 index 0000000..83a633b --- /dev/null +++ b/services/xwiki/README.md @@ -0,0 +1,21 @@ +# XWiki with Tailscale Sidecar Configuration + +This Docker Compose configuration sets up **XWiki** with a Tailscale sidecar container, enabling secure, private access to your self-hosted wiki over your Tailnet. With this setup, your XWiki instance is **not exposed to the public internet** and is only accessible from authorized devices connected via Tailscale. + +## XWiki + +[**XWiki**](https://www.xwiki.org) is a powerful open-source wiki platform designed for collaboration, knowledge management, and building custom web applications. It combines the flexibility of a wiki with the structure of a CMS, making it suitable for teams, documentation hubs, and internal tools. + +## Key Features + +- 📝 Rich content editing with WYSIWYG and Markdown support +- 👥 Advanced user permissions and access control +- 🔌 Highly extensible with plugins and macros +- 📊 Structured data and application-building capabilities +- 🔍 Full-text search and content organization tools +- 🏢 Ideal for internal documentation and knowledge bases + +## Resources + +- XWiki Docker Repo: +- XWiki Documentation: diff --git a/services/xwiki/compose.yml b/services/xwiki/compose.yml new file mode 100644 index 0000000..8e919ca --- /dev/null +++ b/services/xwiki/compose.yml @@ -0,0 +1,86 @@ +configs: + ts-serve: + content: | + {"TCP":{"443":{"HTTPS":true}}, + "Web":{"$${TS_CERT_DOMAIN}:443": + {"Handlers":{"/": + {"Proxy":"http://127.0.0.1:8080"}}}}, + "AllowFunnel":{"$${TS_CERT_DOMAIN}:443":false}} + +services: +# Make sure you have updated/checked the .env file with the correct variables. +# All the ${ xx } need to be defined there. + # Tailscale Sidecar Configuration + tailscale: + image: tailscale/tailscale:latest # Image to be used + container_name: tailscale-${SERVICE} # Name for local container management + hostname: ${SERVICE} # Name used within your Tailscale environment + environment: + - TS_AUTHKEY=${TS_AUTHKEY} + - TS_STATE_DIR=/var/lib/tailscale + - TS_SERVE_CONFIG=/config/serve.json # Tailscale Serve configuration to expose the web interface on your local Tailnet - remove this line if not required + - TS_USERSPACE=false + - TS_ENABLE_HEALTH_CHECK=true # Enable healthcheck endpoint: "/healthz" + - TS_LOCAL_ADDR_PORT=127.0.0.1:41234 # The : for the healthz endpoint + #- TS_ACCEPT_DNS=true # Uncomment when using MagicDNS + - TS_AUTH_ONCE=true + configs: + - source: ts-serve + target: /config/serve.json + volumes: + - ./config:/config # Config folder used to store Tailscale files - you may need to change the path + - ./ts/state:/var/lib/tailscale # Tailscale requirement - you may need to change the path + devices: + - /dev/net/tun:/dev/net/tun # Network configuration for Tailscale to work + cap_add: + - net_admin # Tailscale requirement + #ports: + # - 0.0.0.0:${SERVICEPORT}:${SERVICEPORT} # Binding port ${SERVICE}PORT to the local network - may be removed if only exposure to your Tailnet is required + # If any DNS issues arise, use your preferred DNS provider by uncommenting the config below + # dns: + # - ${DNS_SERVER} + healthcheck: + test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:41234/healthz"] # Check Tailscale has a Tailnet IP and is operational + interval: 1m # How often to perform the check + timeout: 10s # Time to wait for the check to succeed + retries: 3 # Number of retries before marking as unhealthy + start_period: 10s # Time to wait before starting health checks + restart: always + +# ${SERVICE} + application: + image: ${IMAGE_URL} # Image to be used + network_mode: service:tailscale # Sidecar configuration to route ${SERVICE} through Tailscale + container_name: app-${SERVICE} # Name for local container management + depends_on: + tailscale: + condition: service_healthy + db: + condition: service_started + environment: # Varibles are delared in .env file. + - XWIKI_VERSION=${XWIKI_VERSION} + - DB_USER=${DB_USER} + - DB_PASSWORD=${DB_PASSWORD} + - DB_DATABASE=${DB_DATABASE} + - DB_HOST=db-${SERVICE} + volumes: + - ./${SERVICE}-data/xwiki:/usr/local/xwiki + restart: always + db: + image: "mariadb:12" + container_name: db-${SERVICE} + volumes: + - ./${SERVICE}-data/mariadb:/var/lib/mysql + - type: bind + source: ./init.sql + target: /docker-entrypoint-initdb.d/init.sql + environment: + - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD} + - MARIADB_USER=${DB_USER} + - MARIADB_PASSWORD=${DB_PASSWORD} + - MARIADB_DATABASE=${DB_DATABASE} + command: + - "--character-set-server=utf8mb4" + - "--collation-server=utf8mb4_bin" + - "--explicit-defaults-for-timestamp=1" + restart: always diff --git a/services/xwiki/init.sql b/services/xwiki/init.sql new file mode 100644 index 0000000..76dfd8c --- /dev/null +++ b/services/xwiki/init.sql @@ -0,0 +1 @@ +grant all privileges on *.* to xwiki@'%'