Initial commit
This commit is contained in:
commit
936153fa99
8 changed files with 220 additions and 0 deletions
54
docker-compose.yml
Normal file
54
docker-compose.yml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
volumes:
|
||||
im-conf:
|
||||
im-data:
|
||||
im-uploads:
|
||||
swu-data:
|
||||
reverse_certs:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
reverse_proxy-tier:
|
||||
external: true
|
||||
prosody:
|
||||
external: false
|
||||
|
||||
services:
|
||||
prosody:
|
||||
build: ./images/prosody
|
||||
restart: always
|
||||
volumes:
|
||||
- reverse_certs:/etc/letsencrypt/live
|
||||
- im-conf:/etc/prosody
|
||||
- im-data:/var/lib/prosody
|
||||
- im-uploads:/var/www
|
||||
ports:
|
||||
- 5000:5000
|
||||
- 5222:5222
|
||||
- 5269:5269
|
||||
- 5281:5281
|
||||
- 5347:5347
|
||||
environment:
|
||||
- ADMIN_EMAIL=admin@uwu.email
|
||||
- DOMAIN_NAME=palta.cyou
|
||||
|
||||
- VIRTUAL_HOST=u.palta.cyou
|
||||
- LETSENCRYPT_HOST=u.palta.cyou
|
||||
env_file:
|
||||
- slidge.env
|
||||
|
||||
whatsapp:
|
||||
image: codeberg.org/slidge/slidge-whatsapp:latest-amd64
|
||||
restart: always
|
||||
environment:
|
||||
- SLIDGE_JID=whatsapp
|
||||
- SLIDGE_SERVER=prosody
|
||||
- SLIDGE_USER_JID_VALIDATOR=.*@palta.cyou
|
||||
|
||||
- SLIDGE_NO_UPLOAD_PATH=/var/lib/slidge/attachments
|
||||
- SLIDGE_NO_UPLOAD_URL_PREFIX=https://palta.cyou:5281/files/
|
||||
- SLIDGE_NO_UPLOAD_FILE_READ_OTHERS=true
|
||||
env_file:
|
||||
- slidge.env
|
||||
volumes:
|
||||
- swu-data:/var/lib/slidge/:rw
|
||||
- im-uploads:/var/lib/slidge/attachments:rw
|
||||
4
docker-update.sh
Executable file
4
docker-update.sh
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
docker compose up --force-recreate --build -d --pull always
|
||||
docker image prune -f
|
||||
31
images/prosody/Dockerfile
Normal file
31
images/prosody/Dockerfile
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
FROM debian:bookworm-slim
|
||||
ENV LANG=C.UTF-8
|
||||
|
||||
RUN useradd -u 10000 prosody -d /var/lib/prosody -M
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
lua5.4 liblua5.4-dev prosody prosody-modules anacron idn2 lua-unbound luarocks ca-certificates \
|
||||
&& prosodyctl install --server=https://modules.prosody.im/rocks/ mod_privilege \
|
||||
&& rm -f /etc/cron.daily/apt-compat /etc/cron.daily/dpkg /etc/cron.daily/passwd \
|
||||
&& apt-get autoremove -y \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& rm -rf /var/cache/*
|
||||
|
||||
# See https://prosody.im/doc/ports
|
||||
# File Transfer Proxy (mod_proxy65) !NotConfigured
|
||||
#EXPOSE 5000/tcp
|
||||
# Client connections
|
||||
EXPOSE 5222/tcp
|
||||
# s2s Connections
|
||||
EXPOSE 5269/tcp
|
||||
# HTTPS (http_files for no-upload support)
|
||||
EXPOSE 5281/tcp
|
||||
# External components !DoNotPublish
|
||||
EXPOSE 5347/tcp
|
||||
|
||||
COPY --chmod=555 refresh-certs.cron /etc/cron.daily/refresh-certs
|
||||
COPY --chmod=555 entrypoint.sh /entrypoint.sh
|
||||
COPY --chmod=555 config/ /config/
|
||||
|
||||
ENTRYPOINT "/entrypoint.sh"
|
||||
21
images/prosody/config/conf.d/default.cfg.lua
Normal file
21
images/prosody/config/conf.d/default.cfg.lua
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
if(ENV_DOMAIN_NAME)
|
||||
then
|
||||
VirtualHost (ENV_DOMAIN_NAME)
|
||||
privileged_entities = {
|
||||
["whatsapp"] = {
|
||||
roster = "both";
|
||||
message = "outgoing";
|
||||
iq = {
|
||||
["http://jabber.org/protocol/pubsub"] = "both";
|
||||
["http://jabber.org/protocol/pubsub#owner"] = "both";
|
||||
};
|
||||
}
|
||||
}
|
||||
disco_items = {
|
||||
{ "whatsapp", "Whatsapp gateway" };
|
||||
}
|
||||
Component ("u."..ENV_DOMAIN_NAME, "http_file_share")
|
||||
Component "whatsapp"
|
||||
component_secret = ENV_SLIDGE_SECRET or ""
|
||||
modules_enabled = {"privilege"}
|
||||
end
|
||||
93
images/prosody/config/prosody.cfg.lua
Normal file
93
images/prosody/config/prosody.cfg.lua
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
-- https://prosody.im/doc/configure
|
||||
---------- Server-wide settings ----------
|
||||
admins = { ENV_ADMIN_EMAIL}
|
||||
|
||||
plugin_paths = { "/usr/local/lib/prosody/modules" }
|
||||
modules_enabled = {
|
||||
-- Generally required
|
||||
"disco"; -- Service discovery
|
||||
"roster"; -- Allow users to have a roster. Recommended ;)
|
||||
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
|
||||
"tls"; -- Add support for secure TLS on c2s/s2s connections
|
||||
|
||||
-- Not essential, but recommended
|
||||
"blocklist"; -- Allow users to block communications with other users
|
||||
"bookmarks"; -- Synchronise the list of open rooms between clients
|
||||
"carbons"; -- Keep multiple online clients in sync
|
||||
"dialback"; -- Support for verifying remote servers using DNS
|
||||
"limits"; -- Enable bandwidth limiting for XMPP connections
|
||||
"pep"; -- Allow users to store public and private data in their account
|
||||
"private"; -- Legacy account storage mechanism (XEP-0049)
|
||||
"smacks"; -- Stream management and resumption (XEP-0198)
|
||||
"vcard4"; -- User profiles (stored in PEP)
|
||||
"vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard
|
||||
|
||||
-- Nice to have
|
||||
"csi_simple"; -- Simple but effective traffic optimizations for mobile devices
|
||||
"invites"; -- Create and manage invites
|
||||
"invites_adhoc"; -- Allow admins/users to create invitations via their client
|
||||
"invites_register"; -- Allows invited users to create accounts
|
||||
"ping"; -- Replies to XMPP pings with pongs
|
||||
"register"; -- Allow users to register on this server using a client and change passwords
|
||||
"time"; -- Let others know the time here on this server
|
||||
"uptime"; -- Report how long server has been running
|
||||
"version"; -- Replies to server version requests
|
||||
--"mam"; -- Store recent messages to allow multi-device synchronization
|
||||
--"turn_external"; -- Provide external STUN/TURN service for e.g. audio/video calls
|
||||
|
||||
-- Admin interfaces
|
||||
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
|
||||
"admin_shell"; -- Allow secure administration via 'prosodyctl shell'
|
||||
|
||||
-- HTTP modules
|
||||
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
|
||||
--"http_openmetrics"; -- for exposing metrics to stats collectors
|
||||
--"websocket"; -- XMPP over WebSockets
|
||||
|
||||
-- Other specific functionality
|
||||
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
|
||||
--"announce"; -- Send announcement to all online users
|
||||
--"groups"; -- Shared roster support
|
||||
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
|
||||
--"mimicking"; -- Prevent address spoofing
|
||||
--"motd"; -- Send a message to users when they log in
|
||||
--"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
|
||||
--"s2s_bidi"; -- Bi-directional server-to-server (XEP-0288)
|
||||
--"server_contact_info"; -- Publish contact information for this service
|
||||
--"tombstones"; -- Prevent registration of deleted accounts
|
||||
--"watchregistrations"; -- Alert admins of registrations
|
||||
--"welcome"; -- Welcome users who register accounts
|
||||
"http_files";
|
||||
"privilege";
|
||||
}
|
||||
|
||||
-- modules_disabled = {}
|
||||
|
||||
-----
|
||||
-- Must be the same value as slidge's no-upload-path
|
||||
http_files_dir = ENV_HTTP_FILES_DIR or "/var/www"
|
||||
-----
|
||||
|
||||
pidfile = "/run/prosody/prosody.pid";
|
||||
s2s_secure_auth = true
|
||||
--s2s_insecure_domains = { "insecure.example" }
|
||||
--s2s_secure_domains = { "jabber.org" }
|
||||
|
||||
limits = {
|
||||
c2s = {
|
||||
rate = ENV_LIMITS_C2S_RATE or "10kb/s";
|
||||
};
|
||||
s2sin = {
|
||||
rate = ENV_LIMITS_S2SIN_RATE or "30kb/s";
|
||||
};
|
||||
}
|
||||
|
||||
authentication = ENV_AUTHENTICATION or "internal_hashed"
|
||||
storage = ENV_STORAGE or "internal"
|
||||
archive_expires_after = ENV_ARCHIVE_EXPIRES_AFTER or "1w"
|
||||
log = { info = "*stdout" }
|
||||
|
||||
component_interfaces = { "*" }
|
||||
certificates = "certs"
|
||||
|
||||
Include "conf.d/*.cfg.lua"
|
||||
13
images/prosody/entrypoint.sh
Executable file
13
images/prosody/entrypoint.sh
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
cp -r /config/prosody.cfg.lua /config/conf.d/ /etc/prosody/
|
||||
mkdir -p /run/prosody
|
||||
mkdir -p /var/www
|
||||
chown -fR prosody:prosody /run/prosody /var/www
|
||||
chmod 755 -R /etc/prosody
|
||||
|
||||
prosodyctl --root cert import /etc/letsencrypt/live
|
||||
/usr/sbin/anacron -d &
|
||||
|
||||
runuser -u prosody /usr/bin/prosody $@ 2>&1
|
||||
|
||||
3
images/prosody/refresh-certs.cron
Executable file
3
images/prosody/refresh-certs.cron
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
prosodyctl --root cert import /etc/letsencrypt/live
|
||||
1
slidge.env
Normal file
1
slidge.env
Normal file
|
|
@ -0,0 +1 @@
|
|||
SLIDGE_SECRET=
|
||||
Loading…
Add table
Add a link
Reference in a new issue