User Tools

Site Tools


mastodon

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
mastodon [2024/02/09 17:04] – [Installing Pre-Requirements] domelemastodon [2024/02/10 16:26] (current) – external edit 127.0.0.1
Line 1: Line 1:
-FIXME 
-{{tag>FIXME}} 
 ~~~NOCACHE~~~ ~~~NOCACHE~~~
  
-Howto Install Mastodon:+FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME 
 +<code> 
 +''__**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**__''   
 +</code>  
 +How-to Install Mastodon:
  
  
  
 ===== Debian: ===== ===== Debian: =====
- 
- 
  
   * This will be a rapid and dirty Tutorial to gain the maximum afford.   * This will be a rapid and dirty Tutorial to gain the maximum afford.
 +  * Moreover i would suggest to install on the host apt-cacher-ng and add the the VM:
 +    * <code>  
   * I assume you use a fresh, not used System.   * 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:
 +    * <code>
 +      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 ====== 
  
-  * <code> +===== Installing Pre-Requirements ======
-apt -qy update +
-apt install -qy curl gnupg2 ca-certificates lsb-release debian-archive-keyring sudo git build-essentials +
-</code>+
  
-===== Adding Sources =====+  * <code> 
 +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 
  
-  * <code> 
 sudo curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null 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 - sudo curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
-sudo install -m 0755 -d /etc/apt/keyrings+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 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 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 \ sudo echo \
   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \   "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" | \   $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
-  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null </code> +  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- +
-  * <code>+
 for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done  for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done 
-sudo apt -qy update && apt -qy dist-upgrade  +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
 </code> </code>
  
-===== Adding Debian Backports (optional) ===== 
  
-  * <code>nano  /etc/apt/source.list.d/backports</code> + 
-  * <code> + 
-deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware +===== Downloading Sources ===== 
-deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware+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 
 + 
 + 
 +===== Setup Mastodon: User and Repository Cloning ===== 
 +FIXME 
 +  * <code>  
 +  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" 
 +  </code> 
 + 
 + 
 +===== 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 
 +    * <code> docker-compose run --rm web bundle exec rake mastodon:setup </code> 
 + 
 +  * OPTIONALPre-Compile all Assets. 
 +    * <code> docker-compose run --rm web rake assets:precompile </code> 
 + 
 + 
 +===== 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 
 +    * <code> 
 +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  
 +</code>  
 + 
 + 
 +===== Setup Mastodonsystemd ===== 
 + 
 +  * We Link the service-files to auto-update them 
 +    * <code>  
 +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 </code> 
 + 
 +  * We Check if it was successfull: 
 +    * <code>  
 +INSTALLPATH=/opt/mastodon 
 +watch docker compose -f $INSTALLPATH/docker-compose.yml ps
 </code> </code>
  
-===== Cloning Repositories ===== 
  
-  * <code> adduser mastodon </code> 
-  * <code> usermod -g mastodon www-data </code> 
-  * <code> usermod -g www-data mastodon </code> 
-  * <code> chmod 755 /home/mastodon </code> 
-  * <code> su - mastodon </code> 
-  * <code> git clone https://github.com/tootsuite/mastodon.git /home/mastodon/live </code> 
  
-===== Editing docker-compose.yml =====+== References: == 
 + 
 +~~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: Docker-Guide]] 
 +  * [[https://github.com/felx/mastodon-documentation/blob/master/Running-Mastodon/Production-guide.md|Mastodon Github: Production Guide]] 
 +  * [[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: howto build]] 
 +  * FIXME 
mastodon.1707498273.txt.gz · Last modified: 2024/02/09 17:04 by domele