You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nirmal Almara 889d04acd4 readme img width to 100% 7 months ago
cmd remove syscall getpassword 1 year ago
config footer sorcia link update + config version update 8 months ago
internal bug fix on internal/repo.go => relative to absolute 7 months ago
middleware Implement idiomatic folder structure based on Golang suggestions 1 year ago
models modify the labels and remove display picture 9 months ago
pkg header style tweaks + commit message bug fix 1 year ago
public readme img width to 100% 7 months ago
routes modify the labels and remove display picture 9 months ago
scripts add freebsd rc.d config file inside scripts dir 7 months ago
.gitignore repo tree style tweaks 1 year ago
LICENSE create LICENSE 9 months ago update sorcia description with license in 9 months ago
go.mod update gulpfile to latest and compile styles 10 months ago
go.sum update gulpfile to latest and compile styles 10 months ago
gulpfile.js update gulpfile to latest and compile styles 10 months ago
package.json avatar change + style tweaks on repo header 10 months ago
sorcia.go Implement idiomatic folder structure based on Golang suggestions 1 year ago


Sorcia is a software development platform with Git VCS Written in Golang. Licensed under the AGPLv3.



  • Ubuntu 18.04 LTS
  • SQLite3


At this moment, this documentation assumes that you are using a freshly installed Ubuntu 18.04 LTS box for the Sorcia installation. This will get updated to the platforms that Go can compile for as soon as possible. If you had installed Sorcia on a different OS or Architecture successfully, please feel free to send patches and update this README section.

SSH into your server as a root user or a user who has root privleges. For commands that needs root privileges, this documentation will prefix the command with sudo.

First, update and upgrade your OS utilities and packages.

sudo apt update
sudo apt upgrade

Install the necessary packages in order to run the Sorcia binary on your server.

sudo apt -y install software-properties-common build-essential git-core sqlite3 wget vim nginx

Now create a git user on your machine.

sudo adduser --disabled-login --gecos 'sorcia' git
sudo su - git

Install from binary

mkdir sorcia
tar -C sorcia -xzf sorcia.linux-amd64.tar.gz
cd sorcia
chmod +x sorcia

(or) Install from source Download Go 1.14 from using wget.

mkdir go local
tar -C local -xzf <go.tar.gz>

Open .bashrc using your favorite editor and add these lines at the bottom of the file.

export PATH=$PATH:$HOME/local/go/bin
export GOPATH=$HOME/go
source ~/.bashrc

Now download the latest or appropriate Sorcia version in tar.gz or zip formats from and build from source. Example below

mkdir sorcia
tar -C sorcia -xzf sorcia-0.3.1.tar.gz
cd sorcia
go build sorcia.go
chmod +x sorcia

When you are in the project root directory,

cp config/app.ini.sample config/app.ini

and change the app.ini config file if you only prefer. Otherwise the default config is fine to go with.

Move back to the root user or user with root privileges with exit command. Change the SSH port from 22 to something else. Sorcia by default config which is in config/app.ini will run the Git SSH server on port 22. You can change this in the config file if you need. Anyway, For example: in order to change the SSH port

sudo vim /etc/ssh/sshd_config

Look for Port section and change from 22 to whatever port your want. And restart SSH server.

sudo systemctl restart sshd
sudo systemctl restart ssh

Then go to the sorcia directory which is under the git user.

cd /home/git/sorcia

Now, let’s start the sorcia server.

sudo ./sorcia web

That’s it, sorcia will run on port 1937.

Systemd, Nginx and Let’s Encrypt configuration

If you want to move further and setup your systemd service with your domain configured with Nginx, please follow

sudo cp /home/git/sorcia/scripts/sorcia-web.service /etc/systemd/system/
sudo systemctl start sorcia-web.service
sudo systemctl enable sorcia-web.service

Let’s configure Nginx now. Note: Change the to your domain address.

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
sudo rm /etc/nginx/sites-enabled/default
sudo cp /home/git/sorcia/scripts/nginx.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Now open the Nginx config file as shown below in order to mention your domain address.

sudo vim /etc/nginx/sites-available/

and change the to your domain address.

Now check if there is any problem with your Nginx config by

sudo nginx -t

if your Nginx config is correct. It will show you:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reload the Nginx service.

sudo systemctl reload nginx

Now you can go to your domain and see the Sorcia software running. AND if you want to configure https certificate with Let’s Encrypt, follow below commands.

Change the to your domain address in the below certbot command. Follow the Let’s Encrypt prompt and obtain the certificate.

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot --nginx -d

Once you had successfully obtained the Let’s Encrypt certificate. You have to go to the Nginx config file and uncomment these lines. Again, change the to your domain address.

# ssl on;
# ssl_certificate /etc/letsencrypt/live/; # managed by Certbot
# ssl_certificate_key /etc/letsencrypt/live/; # managed by Certbot
# include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

And check and reload Nginx.

sudo nginx -t
sudo systemctl reload nginx

You can now see your domain with https served by Let’s Encrypt.

post installation

There is this important CLI utility from Sorcia which I need to mention. As Sorcia doesn’t rely on SMTP settings, this CLI utility can be used to change:

  • Reset username of any user
  • Reset password of any user
  • Delete any user except the admin user
  • Delete any repository

Remember, this can only be done by the server/sys administrator who can SSH into the sorcia instance.

With the root user or user with root privileges, do cd /home/git/sorcia and enter the following command

sudo ./sorcia usermod

The command will prompt you for each of those above lists and by selecting one and following the further prompts, you can do those changes.