Configurando uma instância Mastodon sem Systemd usando Supervisor
Olá, sou o Incompetente.
Desta vez, tentei configurar uma instância Mastodon.
https://eyes4you.org/
(Como ainda não recebi uma resposta do suporte da Vultr sobre a abertura da porta SMTP e os e-mails não estão chegando, ninguém pode se registrar ainda. Será possível se registrar em alguns dias. Em 20/08/2023 às 21:30)
Problema Inicial
Como o Mastodon é projetado com Systemd como pré-requisito, os arquivos de daemon para executar o Mastodon são fornecidos apenas para Systemd.
Ambiente: Devuan SysVinit
Pré-requisito: O assistente de configuração do Mastodon deve ter sido concluído.
Estes são mastodon-web, mastodon-sidekiq e mastodon-streaming.
Portanto, ao usar o Supervisor, é um software conveniente porque os arquivos de daemon podem ser executados com o Supervisor. Provavelmente, seu design original foi desenvolvido como uma ferramenta de monitoramento de processos, e com a popularização do Systemd, uma diferente disponibilidade surgiu.
Primeiro, vamos instalar o Supervisor.
sudo apt install supervisor
Como um arquivo de configuração é criado em /etc/supervisor, vamos criar um arquivo chamado mastodon.conf desta vez e escrever a seguinte sintaxe.
[group:mastodon]
programs=web,sidekiq,streaming
[program:web]
command=/usr/local/bin/bundle exec puma -C config/puma.rb
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/puma.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=RAILS_ENV=production,PORT=3000,LD_PRELOAD=libjemalloc.so
stopasgroup=true
[program:sidekiq]
command=/usr/local/bin/bundle exec sidekiq -c 25
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/sidekiq.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=RAILS_ENV=production,DB_POOL=25,MALLOC_ARENA_MAX=2,LD_PRELOAD=libjemalloc.so
stopasgroup=true
[program:streaming]
command=/usr/bin/node ./streaming
user=mastodon
directory=/home/sns/mastodon
stdout_logfile=/home/sns/mastodon/log/streaming.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
redirect_stderr=true
environment=NODE_ENV=production,PORT=4000,STREAMING_CLUSTER_NUM=1
stopasgroup=true
As partes que podem precisar de alteração estão em vermelho.
Altere cada daemon para o diretório apropriado, etc.
Depois disso, tudo deve iniciar com supervisorctl start all.
Não se esqueça de restart all se você fizer alterações nos arquivos do Mastodon.
Em seguida, configure o Apache ou Nginx para referenciar o diretório do Mastodon.
Fim.
Referências
A instalação do Mastodon é fácil de entender aqui:
https://zenn.dev/hashito/articles/caa579a9aa8b4f
https://vpslife.server-memo.net/mastodon_install/
Como a sintaxe do Supervisor escrita aqui não funcionou, tentei alterá-la para algo mais moderno (2023...).
Conclusão
Eu estava tentando mudar este arquivo de daemon para SysVinit, mas desisti.
Então, quando olhei para os arquivos de daemon do Artix (Systemd Free), encontrei a string 'Supervisor', o que me levou a esta solução.
Considerando que o Supervisor pode basicamente substituir qualquer arquivo de daemon, como é conveniente...!
Além disso, como neste caso, três arquivos de daemon podem ser concluídos com apenas um, é incrivelmente conveniente poder iniciar e parar vários processos de software ou serviços de uma vez com o Supervisor.
Fim!