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 dbsection: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 rootvalues 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
