Files
appstore/apps/misskey/latest/docker-compose.yml
T
2026-06-28 15:05:05 +08:00

113 lines
3.1 KiB
YAML

services:
misskey:
image: "misskey/misskey:2026.6.0"
container_name: ${CONTAINER_NAME}
user: root
restart: always
depends_on:
misskey-db:
condition: service_healthy
misskey-redis:
condition: service_healthy
networks:
- 1panel-network
- misskey-network
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
entrypoint:
- /bin/bash
- -c
command:
- |
set -e
install -d -o misskey -g misskey -m 755 /misskey/.config /misskey/files
node <<'NODE'
const fs = require('fs');
const required = (name) => {
const value = process.env[name];
if (!value) {
throw new Error(name + ' is required');
}
return value;
};
const quoted = (value) => JSON.stringify(value);
const config = [
'url: ' + quoted(required('MISSKEY_URL')),
'port: 3000',
'setupPassword: ' + quoted(required('MISSKEY_SETUP_PASSWORD')),
'db:',
' host: misskey-db',
' port: 5432',
' db: misskey',
' user: misskey',
' pass: ' + quoted(required('POSTGRES_PASSWORD')),
'dbReplications: false',
'redis:',
' host: misskey-redis',
' port: 6379',
'fulltextSearch:',
' provider: sqlLike',
"id: 'aidx'",
'proxyBypassHosts:',
' - api.deepl.com',
' - api-free.deepl.com',
''
].join('\n');
fs.writeFileSync('/misskey/.config/default.yml', config, { mode: 0o600 });
NODE
chown -R misskey:misskey /misskey/.config /misskey/files
export HOME=/misskey USER=misskey LOGNAME=misskey
exec setpriv --reuid=misskey --regid=misskey --init-groups /usr/bin/tini -- pnpm run migrateandstart
environment:
- TZ=${TZ}
- MISSKEY_URL=${MISSKEY_URL}
- MISSKEY_SETUP_PASSWORD=${MISSKEY_SETUP_PASSWORD}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- "${APP_DATA_DIR}/config:/misskey/.config"
- "${APP_DATA_DIR}/files:/misskey/files"
labels:
createdBy: "Apps"
misskey-db:
image: "postgres:18-alpine"
container_name: ${CONTAINER_NAME}-db
restart: always
networks:
- misskey-network
environment:
- POSTGRES_DB=misskey
- POSTGRES_USER=misskey
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- "${APP_DATA_DIR}/postgres:/var/lib/postgresql"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U misskey -d misskey"]
interval: 10s
timeout: 5s
retries: 10
labels:
createdBy: "Apps"
misskey-redis:
image: "redis:7-alpine"
container_name: ${CONTAINER_NAME}-redis
restart: always
networks:
- misskey-network
volumes:
- "${APP_DATA_DIR}/redis:/data"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 10
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
misskey-network:
driver: bridge