User Tools

Site Tools


en:mastodon

This is an old revision of the document!


~~

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**__''  

How-to Install Mastodon:

Debian:

  • This will be a rapid and dirty Tutorial to gain the maximum afford.
  • 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 ;-)

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
    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 install -m 0755 -d /etc/apt/keyrings
    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 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"
    

Downloading Sources

INSTALLPATH=/opt/mastodon git clone https://github.com/tootsuite/mastodon.git $INSTALLPATH

Setup Mastodon: User and Repository Cloning

FIXME

  •  
      INSTALLPATH=/opt/mastodon
      INSTALLUSER=mastodon
      sudo adduser $INSTALLUSER --home=$INSTALLPATH
      sudo adduser $INSTALLUSER docker
      sudo usermod -g $INSTALLUSER www-data
      sudo usermod -g www-data $INSTALLUSER
      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"
      

Setup Mastodon: .env.production

  • Short Info: You don't need edit the file, it will be overwritten by the next command.
  • Follow up the configuration Guide. You don't need to compile your own Stuff. REALLY NOT. Save the Time :-)
  • Thats why we removed the build lines above.
  • Trust me its a pain in the Backside and waste your time… ;-D
    •  docker-compose run --rm web bundle exec rake mastodon:setup 
  • OPTIONAL: Pre-Compile all Assets.
    •  docker-compose run --rm web rake assets:precompile 

Setup Mastodon: NGINX

  • We need to create and add some information for NGINX to use it
  • Hint: If you need to use a other Reverse-Proxy in front of it, its untested and my not work
    • 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 

Setup Mastodon: systemd

  • We Link the service-files to auto-update them
    •  
      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 
  • We Check if it was successfull:
    •  
      INSTALLPATH=/opt/mastodon
      watch docker compose -f $INSTALLPATH/docker-compose.yml ps
References:
en/mastodon.1707565169.txt.gz · Last modified: 2024/02/10 11:39 by domele