~~~NOCACHE~~~
FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
''__**ATTENTION (09.02.2024): THIS TUTORIAL IS NOT YET FINISHED**__''
Jak zainstalować Mastodon:
===== Debian: =====
* Będzie to szybki i uproszczony poradnik, mający na celu uzyskanie maksymalnej wydajności.
* Ponadto sugerowałbym zainstalowanie na hoście apt-cacher-ng i dodanie go do maszyny wirtualnej:
*
* I assume you use a fresh, not used System.
* If we need to compile, we use ccache here to speed up due it might a 50/50 chance of a failure ;-)
* I also assume that this is a VM/Container that is exclusivly used for this. So that in case of a Totale failure, you can restore from a Snapshot or Backup you have to be done, before you started
* We Assume, you use Debian 12 - if you use i.e. debian 11 use this before:
*
OLDDISTRI=bullseye
sed -i 's/\$OLDDISTRI/bookworm/gi' /etc/apt/sources.list.d/*
sed -i 's/\%OLDDISTRI/bookworm/gi' /etc/apt/*.list
===== Installing Pre-Requirements ======
*
INSTALLPATH=/opt/mastodon
apt install -qy curl gnupg2 ca-certificates lsb-release debian-archive-keyring sudo git build-essential etckeeper imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev nginx libidn11-dev libicu-dev ccache libgdm1 libgdm-dev patch rustc libgmp-dev libgdbm6 libdb-dev uuid-dev git nano iptables-persistent bison libncurses5-dev
sudo curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
sudo curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >/etc/apt/sources.list.d/backports.list
echo "deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware" >>/etc/apt/sources.list.d/backports.list
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt -qy update && sudo apt -qy dist-upgrade && sudo apt -qy install redis-server redis-tools postgresql postgresql-contrib nginx yarn letsencrypt
sudo update-ccache-symlinks
echo PATH="/usr/lib/ccache:$PATH" >> ~/.bashrc && source ~/.bashrc
PATH="/usr/lib/ccache:$PATH"
sudo install -m 0755 -d /etc/apt/keyrings
===== Pobieranie źródeł =====
INSTALLPATH=/opt/mastodon/mastodon
git clone https://github.com/tootsuite/mastodon.git $INSTALLPATH
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
cd $INSTALLPATH
gem install bundler
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
cd $INSTALLPATH && rbenv install 3.2.3
cd $INSTALLPATH && rbenv global 3.2.3
===== Konfiguracja Mastodona: klonowanie użytkownika i repozytorium =====
FIXME
*
INSTALLPATH=/opt/mastodon
INSTALLUSER=mastodon
sudo adduser $INSTALLUSER
sudo adduser $INSTALLUSER docker
sudo usermod --home=$INSTALLPATH $INSTALLUSER
sudo usermod -g $INSTALLUSER www-data
sudo usermod -g www-data $INSTALLUSER
sudo chown -R $INSTALLUSER:www-data $INSTALLPATH
sudo chmod 755 $INSTALLPATH
su - $INSTALLUSER -c "cp $INSTALLPATH/.env.production.sample $INSTALLPATH/.env.production"
su - $INSTALLUSER -c "sed -i 's/\bBuild: \./#Build: ./gi' $INSTALLPATH/docker-compose.yml"
===== Konfiguracja Mastodona: .env.production =====
* Krótka informacja: Nie musisz edytować tego pliku, zostanie on nadpisany przez następne polecenie.
* Postępuj zgodnie z przewodnikiem konfiguracyjnym. Nie musisz kompilować własnych plików. NAPRAWDĘ NIE. Oszczędzaj czas :-)
* Dlatego usunęliśmy powyższe wiersze kompilacji.
* Zaufaj mi, to prawdziwa udręka i strata czasu... ;-D
* docker-compose run --rm web bundle exec rake mastodon:setup
* OPCJONALNIE: Skompiluj wcześniej wszystkie zasoby.
* docker-compose run --rm web rake assets:precompile
===== Konfiguracja Mastodona: NGINX =====
* Musimy utworzyć i dodać pewne informacje, aby NGINX mógł z nich korzystać
* Wskazówka: Jeśli chcesz użyć innego serwera proxy odwrotnego przed nim, rozwiązanie to nie zostało przetestowane i może nie działać
*
INSTALLPATH=/opt/mastodon
sudo mkdir /var/www/letsencrypt
sudo cp $INSTALLPATH/dist/nginx.conf /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
===== Konfiguracja Mastodona: systemd =====
* Łączymy pliki usług, aby były automatycznie aktualizowane
*
INSTALLPATH=/opt/mastodon
INSTALLUSER=mastodon
sudo ln -s $INSTALLPATH/dist/mastodon-sidekiq.service /etc/systemd/system/mastodon-sidekiq.service
sudo ln -s $INSTALLPATH/dist/mastodon-streaming.service /etc/systemd/system/mastodon-streaming.service
sudo ln -s $INSTALLPATH/dist/mastodon-web.service /etc/systemd/system/mastodon-web.service
sudo systemctl daemon-reload && sudo systemctl enable --now mastodon.service
* Sprawdzamy, czy operacja zakończyła się powodzeniem:
*
INSTALLPATH=/opt/mastodon
watch docker compose -f $INSTALLPATH/docker-compose.yml ps
== Źródła: ==
~~REFNOTES~~
* [[https://www.howtoforge.com/how-to-install-mastodon-social-network-on-debian-12/|HowtoForge]]
* [[https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Docker-Guide.md|Mastodon GitHub: Przewodnik po Dockerze]]
* [[https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Production-guide.md|Mastodon Github: Przewodnik po środowisku produkcyjnym]]
* [[https://www.linuxcapable.com/how-to-install-redis-on-debian-linux/|LinuxCapable]]
* [[https://hub.sunny.garden/2022/11/19/notes-on-installing-mastodon-from-source/|hub.sunny.garden]]
* [[https://gist.github.com/TrillCyborg/84939cd4013ace9960031b803a0590c4|GitHub TrillCyborg]]
* [[https://github.com/rbenv/ruby-build?tab=readme-ov-file|rbenv Github: instrukcja kompilacji]]
* FIXME