This post is not relevant anymore. Gab has permanently removed (and will not be re-enabling) Federation in any capacity, so there's no point to even considering running your own Gab Social-based site.
These instructions cover the complete process, “all batteries included”, as I executed this on a VPS.
First, install Docker+Compose.
Then, grab the Gab source code and build it:
git clone -b develop https://code.gab.com/gab/social/gab-social.git
(No; they do not have a stable branch…or versioned tags…)pushd gab-social
cp -v .env.production.sample .env.production
- Edit
docker-compose.yml
- add the following to the end of the
db
section:environment: - POSTGRES_HOST_AUTH_METHOD=trust
- add the following to the end of the
time docker-compose build
This last step took a little under an hour on the 2-core VPS I'm renting, so (unless you're not cheaping out) you'll want to take a break.
Also, mine died in Step 10/37; I ended up having to reboot the system before it'd work again and complete. (I'm not sure whether this was a problem with Docker, the Dockerfile, or just my hosting provider's images.)
You can punch the holes in your firewall while you're waiting:
systemctl start firewalld && systemctl enable firewalld
firewall-cmd --permanent --add-service=http --add-service=https
Then, set it up:
dnf config-manager --add-repo http://nginx.org/packages/centos/8/$(arch)
echo 'gpgkey=https://nginx.org/keys/nginx_signing.key' >> /etc/yum.repos.d/nginx*.repo
dnf install nginx && systemctl enable nginx
Configure a proxying site:
mkdir -v /etc/nginx/sites-{enabled,available}
echo 'include sites-enabled/*;' >> /etc/nginx/conf.d/sites.conf
pushd /etc/nginx/sites-available
- Edit (create) text file
gabsocial
- Paste this monster into it
- Find-and-replace "example.com" and put in your web domain
(in Nano, that's Ctrl_W, Ctrl_R) - Change the
root
values to something like/var/www/null
(don't remove the semicolon at the end!) - Save-and-quit
ln -vs ../sites-available/gabsocial ../sites-enabled/
popd
Set up a TLS certificate (if you know what you're doing, obviously you can replace this part with what you're doing):
dnf install epel-release && dnf install letsencrypt
letsencrypt certonly -d example.com --standalone
Set the whole mess up:
sed -i s_/mnt/md0/assets_/var/gabsocial/assets_ docker-compose.yml
mkdir -vp /var/gabsocial/assets && chmod -Rv 991:991 /var/gabsocial/assets
sed 's/^\(SECRET_KEY_BASE=\).*$/\1'$(docker-compose run --rm web bundle exec rake secret)/ -i .env.production
sed 's/^\(OTP_SECRET=\).*$/\1'$(docker-compose run --rm web bundle exec rake secret)/ -i .env.production
/var/gabsocial/assets
docker-compose run --rm web bundle exec rails gabsocial:setup
- Accept the defaults for everything except the domain and mail settings
- I don't know what to tell you about the mail settings other than the fact that "send mail from localhost" and "don't send a test e-mail" are your best bet if you don't have an e-mail server
- Replace
${local_domain}
with your actual local domain, and run:
sed 's/^\(LOCAL_DOMAIN=\).*$/\1'${local_domain}/ -i .env.production
- If and only if you are running a separate
WEB_DOMAIN
, likewise run:
sed 's/^#? ?\(WEB_DOMAIN=\).*$/\1'${web_domain}/ -i .env.production
- If and only if you are running a separate
And, finally, start it:
systemctl start nginx
docker-compose up -d