Добавлен профиль Mastodon

master 77
parent 38cac57301
commit 7a8efe59ce

@ -0,0 +1,2 @@
calculate:default/amd64/20/server
../..

@ -0,0 +1,2 @@
../../../../calculate/profiles/default/amd64/18/server
..

@ -0,0 +1,3 @@
[main]
os_linux_name = 'Calculate Mastodon'
os_linux_shortname = 'mastodon'

@ -8,6 +8,7 @@
# AMD64 Profiles
amd64 scratch/amd64/20 stable
amd64 mastodon/amd64/20 dev
amd64 taiga/amd64/20 dev
# vim: set ts=8

@ -0,0 +1 @@
# Calculate os_linux_shortname==mastodon cl_name==calculate-core append=skip

@ -0,0 +1 @@
# Calculate env=install ac_install_merge==on mergepkg(www-servers/nginx)!= append=skip

@ -0,0 +1,2 @@
# Calculate append=after path=/etc name=#-cut(2,.)-# grep(/etc/#-cut(2,.)-#,#-cut(1,.)-#)== protected
mastodon:x:1000:

@ -0,0 +1,2 @@
# Calculate append=after path=/etc name=#-cut(2,.)-# grep(/etc/#-cut(2,.)-#,#-cut(1,.)-#)== protected
mastodon:x:1000:1000::/var/calculate/www/mastodon:/bin/bash

@ -0,0 +1,2 @@
# Calculate append=after path=/etc name=#-cut(2,.)-# grep(/etc/#-cut(2,.)-#,#-cut(1,.)-#)== protected
mastodon:!:19425:0:99999:7:::

@ -0,0 +1,4 @@
# Calculate path=/var/calculate/www/mastodon name=.bashrc comment=# chown=mastodon:mastodon
source ~/.node-live/bin/activate
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

@ -0,0 +1,68 @@
# Calculate path=/var/calculate/www/mastodon/live name=.env.production chown=mastodon:mastodon comment=# exists(/var/calculate/www/mastodon/live/.env.production.sample)!= protected
# https://docs.joinmastodon.org/admin/config/ for the full documentation.
# Federation
# ----------
# This identifies your server and cannot be changed safely later
# ----------
LOCAL_DOMAIN=example.com
# Redis
# -----
REDIS_HOST=localhost
REDIS_PORT=6379
# PostgreSQL
# ----------
DB_HOST=/var/run/postgresql
DB_USER=mastodon
DB_NAME=mastodon_production
DB_PASS=
DB_PORT=5432
# Elasticsearch (optional)
# ------------------------
#ES_ENABLED=true
#ES_HOST=localhost
#ES_PORT=9200
# Authentication for ES (optional)
#ES_USER=
#ES_PASS=
# Secrets
# -------
# Make sure to use `rake secret` to generate secrets
# -------
SECRET_KEY_BASE=
OTP_SECRET=
# Web Push
# --------
# Generate with `rake mastodon:webpush:generate_vapid_key`
# --------
VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=
# Sending mail
# ------------
SMTP_SERVER=
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=notifications@example.com
# File storage (optional)
# -----------------------
#S3_ENABLED=true
#S3_BUCKET=files.example.com
#AWS_ACCESS_KEY_ID=
#AWS_SECRET_ACCESS_KEY=
#S3_ALIAS_HOST=files.example.com
# IP and session retention
# -----------------------
# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml
# to be less than daily if you lower IP_RETENTION_PERIOD below two days (172800).
# -----------------------
#IP_RETENTION_PERIOD=31556952
#SESSION_RETENTION_PERIOD=31556952

@ -0,0 +1,15 @@
# Calculate format=samba path=/var/calculate chmod=600 chown=mastodon:mastodon grep(/var/calculate/ini.env,local_domain)== protected
[mastodon]
local_domain=calculate.social
node=16.18.0
git_tag=4.1.1
ruby=3.0.4
login=owner
smtp_from_address=Mastodon <support@calculate.ru>
smtp_login=
smtp_password=
smtp_port=465
smtp_server=mail.spb.calculate.ru

@ -0,0 +1,22 @@
# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/mastodon/.node-live)!=
#!/sbin/openrc-run
name="Mastodon Sidekiq daemon"
description=""
pidfile=/run/mastodon-sidekiq.pid
command_user=mastodon
output_log=/var/log/mastodon-sidekiq.log
error_log=/var/log/mastodon-sidekiq.log
directory=/var/calculate/www/mastodon/live
start_stop_daemon_args="-e RAILS_ENV=production -e DB_POOL=25 -e MALLOC_ARENA_MAX=2"
command=/var/calculate/www/mastodon/.rbenv/shims/bundle
command_args="exec sidekiq -c 25"
command_background=true
depend() {
use postgresql net redis
}
start_pre() {
checkpath -f -o mastodon -m 0600 /var/log/mastodon-sidekiq.log
}

@ -0,0 +1,21 @@
# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/mastodon/.node-live)!=
#!/sbin/openrc-run
name="Mastodon streaming daemon"
description=""
pidfile=/run/mastodon-streaming.pid
command_user=mastodon
output_log=/var/log/mastodon-streaming.log
error_log=/var/log/mastodon-streaming.log
directory=/var/calculate/www/mastodon/live
start_stop_daemon_args="-e NODE_ENV=production -e PORT=4000 -e STREAMING_CLUSTER_NUM=1"
command=/var/calculate/www/mastodon/.node-live/bin/node
command_args="./streaming"
command_background=true
depend() {
use postgresql net redis
}
start_pre() {
checkpath -f -o mastodon -m 0600 /var/log/mastodon-streaming.log
}

@ -0,0 +1,29 @@
# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/mastodon/.node-live)!=
#!/sbin/openrc-run
name="Mastodon Web daemon"
description=""
pidfile=/run/mastodon-web.pid
extra_commands="reload"
command_user=mastodon
output_log=/var/log/mastodon-web.log
error_log=/var/log/mastodon-web.log
directory=/var/calculate/www/mastodon/live
start_stop_daemon_args="-e RAILS_ENV=production -e PORT=3000"
command=/var/calculate/www/mastodon/.rbenv/shims/bundle
command_args="exec puma -C config/puma.rb"
command_background=true
depend() {
need nginx postgresql
need mastodon-streaming mastodon-sidekiq
}
start_pre() {
checkpath -f -o mastodon -m 0600 /var/log/mastodon-web.log
}
reload() {
einfo "Reload $name"
kill -USR1 $(cat $pidfile)
}

@ -0,0 +1 @@
# Calculate path=/usr/sbin name=#-cut(1,.)-# link=/var/db/repos/container/scripts/mastodon/setup.sh symbolic protected

@ -0,0 +1 @@
# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic exists(/var/calculate/www/mastodon/.node-live)!=

@ -0,0 +1 @@
# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic exists(/var/calculate/www/mastodon/.node-live)!=

@ -0,0 +1 @@
# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic exists(/var/calculate/www/mastodon/.node-live)!=

@ -0,0 +1 @@
# Calculate env=install ac_install_merge==on mergepkg(www-servers/nginx)!= append=skip

@ -0,0 +1,161 @@
# Calculate path=/etc/nginx/sites-enabled exists(/etc/nginx/sites-enabled/#-cut()-#)== comment=#
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend {
server 127.0.0.1:3000 fail_timeout=0;
}
upstream streaming {
server 127.0.0.1:4000 fail_timeout=0;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
server {
listen 80;
listen [::]:80;
server_name calculate.social;
root /var/calculate/www/mastodon/live/public/;
location /.well-known/acme-challenge/ { allow all; }
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name calculate.social;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# Uncomment these lines once you acquire a certificate:
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
keepalive_timeout 70;
sendfile on;
client_max_body_size 80m;
root /var/calculate/www/mastodon/live/public/;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon;
location / {
try_files $uri @proxy;
}
# If Docker is used for deployment and Rails serves static files,
# then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`.
location = /sw.js {
add_header Cache-Control "public, max-age=604800, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/assets/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/avatars/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/emoji/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/headers/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/packs/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/shortcuts/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/sounds/ {
add_header Cache-Control "public, max-age=2419200, must-revalidate";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ~ ^/system/ {
add_header Cache-Control "public, max-age=2419200, immutable";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
try_files $uri =404;
}
location ^~ /api/v1/streaming {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Proxy "";
proxy_pass http://streaming;
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
tcp_nodelay on;
}
location @proxy {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Proxy "";
proxy_pass_header Server;
proxy_pass http://backend;
proxy_buffering on;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache CACHE;
proxy_cache_valid 200 7d;
proxy_cache_valid 410 24h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cached $upstream_cache_status;
tcp_nodelay on;
}
error_page 404 500 501 502 503 504 /500.html;
}

@ -0,0 +1,5 @@
# Calculate exec=/bin/bash exists(/etc/nginx/ssl/privkey.pem)==||exists(/etc/nginx/ssl/fullchain.pem)==
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/CN=calculate.social' -keyout /etc/nginx/ssl/privkey.pem -out /etc/nginx/ssl/fullchain.pem &>/dev/null
true

@ -0,0 +1 @@
# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic exists(/var/calculate/www/mastodon/live/)!=

@ -0,0 +1 @@
# Calculate env=install ac_install_merge==on mergepkg(dev-db/postgresql)!= append=skip

@ -0,0 +1,5 @@
# Calculate run=/bin/bash
ver=$(ls -d /var/db/pkg/dev-db/postgresql-*)
ver=${ver#*postgresql-}
echo ${ver%%.*} > /tmp/pgsqlver

@ -0,0 +1 @@
# Calculate path=/var/calculate name=postgresql chmod=700 chown=postgres:postgres

@ -0,0 +1 @@
# Calculate path=/etc name=postgresql-#-load(char,/tmp/pgsqlver)-#

@ -0,0 +1,10 @@
# Calculate chmod=600 comment=# chown=postgres:postgres
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all password
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 password

@ -0,0 +1 @@
# Calculate chmod=600 comment=# chown=postgres:postgres

@ -0,0 +1,18 @@
# Calculate chmod=600 comment=# chown=postgres:postgres
max_connections = 100 # (change requires restart)
shared_buffers = 128MB # min 128kB
dynamic_shared_memory_type = posix # the default is the first option
max_wal_size = 1GB
min_wal_size = 80MB
log_timezone = 'W-SU'
datestyle = 'iso, dmy'
timezone = 'W-SU'
lc_messages = 'ru_RU.UTF-8' # locale for system error message
lc_monetary = 'ru_RU.UTF-8' # locale for monetary formatting
lc_numeric = 'C' # locale for number formatting
lc_time = 'ru_RU.UTF-8' # locale for time formatting
default_text_search_config = 'pg_catalog.russian'
plperl.on_init = 'use utf8; use re; package utf8; require "utf8_heavy.pl";'
listen_addresses = '127.0.0.1'

@ -0,0 +1,6 @@
# Calculate format=samba chown=mastodon:mastodon path=/var/calculate grep(/var/calculate/ini.env,postgresql)== comment=# protected
[postgresql]
postgres_password = #-rnd(pas,12)-#
mastodon_user = mastodon
mastodon_password = #-rnd(pas,12)-#
mastodon_database = mastodon_production

@ -0,0 +1 @@
# Calculate path=/var/lib name=postgresql link=/var/calculate/postgresql symbolic protected

@ -0,0 +1,3 @@
# Calculate path=/root name=.pgpass chmod=600 comment=# protected
localhost:*:*:postgres:#-ini(postgresql.postgres_password)-#
localhost:*:*:mastodon:#-ini(postgresql.mastodon_password)-#

@ -0,0 +1 @@
# Calculate env=install ac_install_merge==on mergepkg(dev-db/redis)!= append=skip

@ -0,0 +1,73 @@
# Calculate path=/etc/redis exists(/etc/redis/#-cut()-#)== comment=#
bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /run/redis/redis.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir /var/lib/redis/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
maxmemory 1024MB
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

File diff suppressed because it is too large Load Diff

@ -0,0 +1 @@
# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic

@ -0,0 +1,12 @@
# Calculate env=update ac_update_sync==on path=/var/lib/portage cl_update_world==merge||cl_update_world==rebuild format=world
dev-db/postgresql:14
dev-python/nodeenv
dev-python/setuptools
sys-devel/gettext
dev-db/redis
media-gfx/imagemagick
media-video/ffmpeg
www-servers/nginx
dev-util/pkgconf
dev-libs/protobuf
net-dns/libidn

@ -0,0 +1,21 @@
#!/bin/bash
export PATH="/lib/rc/bin:$PATH"
set -ueo pipefail
scriptpath=$(dirname $(readlink -f $0))
. /var/db/repos/calculate/scripts/ini.sh
echo "Mastodon setup"
test -f /run/redis/redis.pid && /etc/init.d/redis start
for script in $scriptpath/stages/*.sh; do
"$script"
done
/etc/init.d/redis restart
rc-update -u
openrc
echo -e "\nAll is done! Open the link https://${ini[mastodon.local_domain]} on your browser after adding ${ini[mastodon.local_domain]} to dns"

@ -0,0 +1,60 @@
#!/bin/bash
set -eo pipefail
export PATH="/lib/rc/bin:$PATH"
SCRIPT=$(readlink -f $0)
[[ $UID == 0 ]] && exec su - mastodon -c "$SCRIPT"
. /var/db/repos/container/scripts/functions.sh
. /var/db/repos/calculate/scripts/ini.sh
cd ~/
if [[ ! -e ~/.node-live ]]
then
einfo 'Install Node.js'
cd ~
nodeenv --node=${ini[mastodon.node]} .node-${ini[mastodon.node]%%.*}
ln -sfT .node-${ini[mastodon.node]%%.*} .node-live
set +u
source .node-live/bin/activate
set -u
einfo 'Install yarn'
npm install -g yarn
corepack enable
yarn set version classic
fi
if [[ ! -e ~/.rbenv ]]; then
einfo 'Rbenv Setup: Get the code'
git clone --single-branch --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv
eend
fi
if [[ ! -e ~/.rbenv/plugins/ruby-build ]]; then
einfo 'Ruby Setup: Get the code'
git clone --single-branch --depth 1 https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
eend
fi
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
if [[ ! -e ~/live ]]; then
einfo 'Mastodon Setup: Get the code'
git config --global advice.detachedHead false
git clone -b v${ini[mastodon.git_tag]} --single-branch --depth 1 https://github.com/tootsuite/mastodon.git ~/live
einfo 'Install Ruby'
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install ${ini[mastodon.ruby]}
rbenv global ${ini[mastodon.ruby]}
gem install bundler --no-document
cd ~/live
bundle config deployment 'true'
bundle config without 'development test'
einfo 'Install gems'
bundle install -j$(nproc)
eend
fi

@ -0,0 +1,31 @@
#!/bin/bash
set -ueo pipefail
export PATH="/lib/rc/bin:$PATH"
[[ -n "$(ls -A /var/lib/postgresql)" ]] && exit
. /var/db/repos/container/scripts/functions.sh
. /var/db/repos/calculate/scripts/ini.sh
pgver() {
local ver=$(ls -d /var/db/pkg/dev-db/postgresql-*)
ver=${ver#*postgresql-}
if [[ ${1:-} == 'slot' ]]; then
echo ${ver%%.*}
else
echo ${ver%%-*}
fi
}
emerge --config dev-db/postgresql
/etc/init.d/postgresql-$(pgver slot) start
psql -U postgres -c "ALTER USER postgres WITH PASSWORD '${ini[postgresql.postgres_password]}'"
psql -U postgres -c "CREATE ROLE ${ini[postgresql.mastodon_user]} WITH login createdb"
psql -U postgres -c "ALTER USER ${ini[postgresql.mastodon_user]} WITH PASSWORD '${ini[postgresql.mastodon_password]}'"
cl-core-setup -n postgresql -f
/etc/init.d/postgresql-$(pgver slot) restart

@ -0,0 +1,36 @@
#!/bin/bash
set -ueo pipefail
export PATH="/lib/rc/bin:$PATH"
. /var/db/repos/container/scripts/functions.sh
. /var/db/repos/calculate/scripts/ini.sh
cl-setup-system
cd /var/calculate/www/mastodon
configure_conf() {
local config=$1
einfo "Setting up $config ..."
test -f $config.old || cp $config $config.old
for (( i=0; i < ${#replace[@]}; i += 2 )); do
var=${replace[$i]}
val=${replace[$i+1]}
grep -qE "^([#;]\s*)?\s*?$var\s*[:=]" $config || eerror "Parametr '$var' is not found."
sed -i -E "s|^([#;]\s*)?(\s*)(${var})(\s*)([:=])(\s*)?.*$|\2\3\4\5\6${val}|g" \
$config
done
eend
}
replace=(
LOCAL_DOMAIN "${ini[mastodon.local_domain]}"
DB_USER "${ini[postgresql.mastodon_user]}"
DB_PASS "${ini[postgresql.mastodon_password]}"
SMTP_FROM_ADDRESS "${ini[mastodon.smtp_from_address]}"
SMTP_PORT "${ini[mastodon.smtp_port]}"
)
configure_conf live/.env.production
/etc/init.d/redis restart

@ -0,0 +1,56 @@
#!/bin/bash
#set -ueo pipefail
SCRIPT=$(readlink -f $0)
[[ $UID == 0 ]] && exec su - mastodon -c "$SCRIPT"
. /var/db/repos/container/scripts/functions.sh
. /var/db/repos/calculate/scripts/ini.sh
set +u
source ~/.node-live/bin/activate
set -u
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
cd ~/live
get_variables(){
SECRET_KEY_BASE=$(RAILS_ENV=production bundle exec rake secret)
OTP_SECRET=$(RAILS_ENV=production bundle exec rake secret)
vapid_array=($(RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key))
VAPID_PRIVATE_KEY=$(echo ${vapid_array[0]} | cut -d= -f2,3,4)
VAPID_PUBLIC_KEY=$(echo ${vapid_array[1]} | cut -d= -f2,3,4)
sed -i -E "s|(SECRET_KEY_BASE=).*|\1${SECRET_KEY_BASE}|g" ~/live/.env.production
sed -i -E "s|(OTP_SECRET=).*|\1${OTP_SECRET}|g" ~/live/.env.production
sed -i -E "s|(VAPID_PRIVATE_KEY=).*|\1${VAPID_PRIVATE_KEY}|g" ~/live/.env.production
sed -i -E "s|(VAPID_PUBLIC_KEY=).*|\1${VAPID_PUBLIC_KEY}|g" ~/live/.env.production
}
migrate_pgsql(){
RAILS_ENV=production bundle exec rake db:setup
RAILS_ENV=production bundle exec rake assets:precompile
RAILS_ENV=production bin/tootctl accounts create ${ini[mastodon.login]} \
--email ${ini[mastodon.smtp_from_address]} \
--confirmed --role Owner
einfo Mail: ${ini[mastodon.smtp_from_address]}
einfo Login: ${ini[mastodon.login]}
}
check_migrate(){
data=$(RAILS_ENV=production bundle exec rake db:migrate:status 2>/dev/null)
}
data={:-}
#if [[ -z $data ]]; then
get_variables
migrate_pgsql
#else
check_migrate
#fi
Loading…
Cancel
Save