Roll Your Own Twitter Alternative with GNU Social

  1. Log into the Debian device
  2. Run the following commands in a terminal:
    # update software repositories
    sudo apt update
    # install software updates
    sudo apt upgrade -y
    # install Apache and MySQL
    sudo apt install apache2 mariadb-server mariadb-client -y
    # install PHP components
    sudo apt install php7.3 libapache2-mod-php7.3 php7.3-curl php7.3-mbstring php7.3-xml php7.3-fpm php7.3-gd php7.3-gmp php7.3-intl php7.3-mysql php7.3-json -y
    # download gnu social
    wget -O ~/Downloads/gnu-social-master.tar.gz https://git.gnu.io/gnu/gnu-social/-/archive/master/gnu-social-master.tar.gz
    # extract the tar.gz
    tar zxf ~/Downloads/gnu-social-*.tar.gz --directory ~/Downloads
    # move the folder to web root
    sudo mv ~/Downloads/gnu-social-*/ /var/www/html/gnusocial
    # set permissions
    sudo chown -R www-data:www-data /var/www/html/gnusocial/
    sudo chmod g+w /var/www/html/gnusocial/
    # configure the MySQL database
    sudo su
    mysql_secure_installation
  3. Press Enter to login as root
  4. Type Y and press Enter to set a root password, type the password twice to confirm
  5. Type Y and press Enter to remove anonymous users
  6. Type Y and press Enter to disallow root login remotely
  7. Type Y and press Enter to remove the test database
  8. Type Y and press Enter to reload privilege tables
  9. Run the following command to login into MySQL:
    mysql -u root -p
  10. Authenticate with the root password set earlier
  11. Run the following commands to create the GNU Social database and database user
    CREATE DATABASE gnusocial CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'gnusocial_rw'@'localhost' IDENTIFIED BY 'gnu$ocia1!!';
    GRANT ALL PRIVILEGES ON gnusocial.* TO 'gnusocial_rw'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    exit
  12. Continue with the following commands:
    # edit default apache conf
    sudo nano /etc/apache2/sites-available/000-default.conf
  13. Paste the following at the bottom of the .conf file
    <Directory /var/www/html/gnusocial/>
    AllowOverride all
    </Directory>
  14. Press CTRL+O, Enter, CTRL+X to write the changes
  15. Continue with the following commands:
    # enable .htaccess in ./gnusocial
    sudo cp /var/www/html/gnusocial/htaccess.sample /var/www/html/gnusocial/.htaccess
    # set the relative path in .htaccess
    sudo sed -i "s/RewriteBase \//RewriteBase \/gnusocial\//g" /var/www/html/gnusocial/.htaccess
    # enable apache2 modules
    sudo a2enmod rewrite
    # restart apache2
    sudo systemctl restart apache2
  16. Open a web browser and navigate to http://DNSorIP/gnusocial/install.php
  17. The GNU Social installation screen should be displayed
  18. Enter a site name and fill out the database connection information as follows

    Hostname: localhost
    Name: gnusocial
    DB username: gnusocial_rw
    DB password: gnu$ocia1!!

  19. Enter an administrator username, password and email
  20. Click the Submit button
  21. After the installation completes, click the visit your new GNU social site link toward the bottom of the page
  22. Click Login at the top right of the page
  23. Login with the administrator user created during initialization
  24. Welcome to GNU Social

Source: https://git.gnu.io/gnu/gnu-social/blob/master/INSTALL