From 7525bcaabb5439c68df624d24901835bceaa6dd2 Mon Sep 17 00:00:00 2001 From: ale Date: Fri, 8 Nov 2024 16:13:47 +0100 Subject: [PATCH] compose and entrypoint --- Dockerfile | 8 +- compose.yml | 50 +++++++++++ default.yml | 229 ++++++++++++++++++++++++++++++++++++++++++++++++++ entrypoint.sh | 4 + 4 files changed, 288 insertions(+), 3 deletions(-) create mode 100644 compose.yml create mode 100644 default.yml create mode 100755 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 3a3c78f..d9a6cb6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,13 +6,15 @@ RUN git clone -n --depth=1 --filter=tree:0 https://github.com/misskey-dev/misske git checkout RUN cd /misskey/packages/misskey-reversi && yarn --dev && yarn build && \ cd ../misskey-js && yarn --dev && yarn build && \ - cd ../backend && yarn add ../misskey-reversi ../misskey-js && yarn build + cd ../backend && yarn add ../misskey-reversi ../misskey-js && yarn --dev && yarn build FROM node:22-bookworm-slim COPY --from=build --chown=node:node /misskey/.config /.config COPY --from=build --chown=node:node /misskey/packages/meta.json /built/meta.json COPY --from=build --chown=node:node /misskey/packages/backend /fedired/backend USER node -RUN cp /.config/example.yml /.config/default.yml +COPY ./default.yml /.config/default.yml WORKDIR /fedired/backend -ENTRYPOINT ["yarn", "start"] +COPY ./entrypoint.sh . +EXPOSE 3000 +ENTRYPOINT ["/bin/bash", "./entrypoint.sh"] diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..7140a81 --- /dev/null +++ b/compose.yml @@ -0,0 +1,50 @@ +services: + + fedired-backend: + build: . + image: fedired-backend:develop + container_name: fedired + hostname: fedired + restart: always + depends_on: + - redis + - postgres + expose: + - "3000" + volumes: + - ./files:/fedired/files + - ./default.yml:/.config/default.yml:ro + networks: + fedirednet: + + redis: + image: redis + container_name: redis-fedired + hostname: redis-fedired + restart: always + volumes: + - ./redis:/data + expose: + - 6379 + networks: + fedirednet: + + postgres: + image: postgres:9.6 + container_name: postgres-fedired + hostname: postgres-fedired + restart: always + volumes: + - ./pg_data:/var/lib/postgresql/data + - ./pg_backups:/pg_backups + environment: + - POSTGRES_USER=fedired + - POSTGRES_PASSWORD=fedired + - POSTGRES_DB=fedired + expose: + - 5432 + networks: + fedirednet: + +networks: + fedirednet: diff --git a/default.yml b/default.yml new file mode 100644 index 0000000..5903805 --- /dev/null +++ b/default.yml @@ -0,0 +1,229 @@ +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# fedired configuration +#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +# ┌─────┐ +#───┘ URL └───────────────────────────────────────────────────── + +# Final accessible URL seen by a user. +url: http://fedired-backend/ + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# URL SETTINGS AFTER THAT! + +# ┌───────────────────────┐ +#───┘ Port and TLS settings └─────────────────────────────────── + +# +# fedired requires a reverse proxy to support HTTPS connections. +# +# +----- https://example.tld/ ------------+ +# +------+ |+-------------+ +----------------+| +# | User | ---> || Proxy (443) | ---> | fedired (3000) || +# +------+ |+-------------+ +----------------+| +# +---------------------------------------+ +# +# You need to set up a reverse proxy. (e.g. nginx) +# An encrypted connection with HTTPS is highly recommended +# because tokens may be transferred in GET requests. + +# The port that your fedired server should listen on. +port: 3000 + +# You can also use UNIX domain socket. +# socket: /path/to/fedired.sock +# chmodSocket: '777' + +# ┌──────────────────────────┐ +#───┘ PostgreSQL configuration └──────────────────────────────── + +db: + host: postgres-fedired + port: 5432 + + # Database name + db: fedired + + # Auth + user: fedired + pass: fedired + + # Whether disable Caching queries + #disableCache: true + + # Extra Connection options + #extra: + # ssl: true + +dbReplications: false + +# You can configure any number of replicas here +#dbSlaves: +# - +# host: +# port: +# db: +# user: +# pass: +# - +# host: +# port: +# db: +# user: +# pass: + +# ┌─────────────────────┐ +#───┘ Redis configuration └───────────────────────────────────── + +redis: + host: redis-fedired + port: 6379 + #family: 0 # 0=Both, 4=IPv4, 6=IPv6 + #pass: example-pass + #prefix: example-prefix + #db: 1 + # You can specify more ioredis options... + #username: example-username + +#redisForPubsub: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 +# # You can specify more ioredis options... +# #username: example-username + +#redisForJobQueue: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 +# # You can specify more ioredis options... +# #username: example-username + +#redisForTimelines: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 +# # You can specify more ioredis options... +# #username: example-username + +# ┌───────────────────────────┐ +#───┘ MeiliSearch configuration └───────────────────────────── + +# You can set scope to local (default value) or global +# (include notes from remote). + +#meilisearch: +# host: localhost +# port: 7700 +# apiKey: '' +# ssl: true +# index: '' +# scope: local + +# ┌───────────────┐ +#───┘ ID generation └─────────────────────────────────────────── + +# You can select the ID generation method. +# You don't usually need to change this setting, but you can +# change it according to your preferences. + +# Available methods: +# aid ... Short, Millisecond accuracy +# aidx ... Millisecond accuracy +# meid ... Similar to ObjectID, Millisecond accuracy +# ulid ... Millisecond accuracy +# objectid ... This is left for backward compatibility + +# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE +# ID SETTINGS AFTER THAT! + +id: 'aidx' + +# ┌─────────────────────┐ +#───┘ Other configuration └───────────────────────────────────── + +# Whether disable HSTS +#disableHsts: true + +# Number of worker processes +clusterLimit: 2 + +# Job concurrency per worker +#deliverJobConcurrency: 128 +#inboxJobConcurrency: 16 +#relashionshipJobConcurrency: 16 +# What's relashionshipJob?: +# Follow, unfollow, block and unblock(ings) while following-imports, etc. or account migrations. + +# Job rate limiter +#deliverJobPerSec: 128 +#inboxJobPerSec: 32 +#relashionshipJobPerSec: 64 + +# Job attempts +#deliverJobMaxAttempts: 12 +#inboxJobMaxAttempts: 8 + +# Local address used for outgoing requests +#outgoingAddress: 127.0.0.1 + +# IP address family used for outgoing request (ipv4, ipv6 or dual) +outgoingAddressFamily: dual + +# Proxy for HTTP/HTTPS +#proxy: http://127.0.0.1:3128 + +#proxyBypassHosts: +# - api.deepl.com +# - api-free.deepl.com +# - www.recaptcha.net +# - hcaptcha.com +# - challenges.cloudflare.com + +# Proxy for SMTP/SMTPS +#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT +#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 +#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 + +# Media Proxy +# Reference Implementation: https://github.com/fedired-dev/media-proxy +# * Deliver a common cache between instances +# * Perform image compression (on a different server resource than the main process) +#mediaProxy: https://example.com/proxy + +# Proxy remote files (default: true) +# Proxy remote files by this instance or mediaProxy to prevent remote files from running in remote domains. +proxyRemoteFiles: false + +# Movie Thumbnail Generation URL +# There is no reference implementation. +# For example, fedired will point to the following URL: +# https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4 +#videoThumbnailGenerator: https://example.com + +# Sign to ActivityPub GET request (default: true) +signToActivityPubGet: true + +# For security reasons, uploading attachments from the intranet is prohibited, +# but exceptions can be made from the following settings. Default value is "undefined". +# Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)). +#allowedPrivateNetworks: [ +# '127.0.0.1/32' +#] + +# Upload or download file size limits (bytes) +#maxFileSize: 262144000 + +# PID File of master process +#pidFile: /tmp/fedired.pid + +driveFilesRepository: /fedired/files diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..83e526f --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/bash +./node_modules/.bin/typeorm migration:run -d ormconfig.js +yarn start +