compose and entrypoint

This commit is contained in:
ale 2024-11-08 16:13:47 +01:00
parent 2dad575042
commit 7525bcaabb
4 changed files with 288 additions and 3 deletions

View File

@ -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"]

50
compose.yml Normal file
View File

@ -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:

229
default.yml Normal file
View File

@ -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

4
entrypoint.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
./node_modules/.bin/typeorm migration:run -d ormconfig.js
yarn start