xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
File Mode Size
artwork/ 040000
debian/ 040000
docker/ 040000
docs/ 040000
hooks/ 040000
inc/ 040000
root/ 040000
samples/ 040000
scripts/ 040000
selinux/ 040000
techdocs/ 040000
tests/ 040000
tools/ 040000
.exclude 100644 9B
.gitignore 100644 102B
AUTHORS 100644 289B
Certs.txt 100644 1,132B
Compare.txt 100644 1,339B
History.txt 100644 549B
LICENSE 100644 34KiB
Makefile.in 100644 2,695B
README 100644 4,788B
TODO 100644 98KiB
TODO-plans 100644 1,294B
TODO.perf 100644 203B
TODO.vm 100644 373B
configure 100755 30B
duilder 100755 16KiB
duilder.conf 100644 536B
rocketgit.spec.in 100644 3,881B
spell_check.sh 100755 256B

/README
== About ==
. Website: http://kernel.embedromix.ro/us/
. Author: Catalin(ux) M. BOIE
. Description: Light and fast Git hosting solution
. License: Affero GPLv3+
. Language: PHP (plans to rewrite in C in the near future)
. Database: PostgreSQL
. Project start date: 2011-03-04


== Features ==
. Free software
. No Java
. No Javascript
. Upgrades with the standard tools of the distributions
. Very little dependencies, all packaged in main-stream distributions
. SELinux friendly
. Very small (RPM is around 300KiB)
. IPv6 ready
. Internationalization ready


== Install ==
. Edit /etc/rocketgit/config.php
. Edit /etc/rocketgit/php-fpm.conf
. Edit /etc/rocketgit/pool.conf
. Edit /etc/httpd/conf.d/rocketgit.conf
. Activate rocketgit php-fpm:
	systemd based distributions:
		# systemctl enable rocketgit-fpm
		# systemctl start rocketgit-fpm
	RedHat/CentOS/Oracle
		# chkconfig rocketgit-fpm on
		# service rocketgit-fpm start

. PHP
	Adjust php.ini to:
		- allow enough RAM and execution time
		- fix timezone
	You may want to activate an op cache to speed up the PHP scripts:
		# Only on Fedora/CentOS based distributions
		yum/dnf install php-opcache
	Also, we recommend to activate opcache also for cli:
	change opcache.enable_cli to 1 in /etc/php.d/10-opcache.ini or
	/etc/php-zts.d/10-opcache.ini.

. Activate web server (apache)
	systemd based distributions:
		# systemctl enable httpd.service
		# systemctl restart httpd.service
	RedHat/CentOS/Oracle
		# chkconfig httpd on
		# service httpd restart

. Activate sshd (for ssh:// access)
	systemd based distributions:
		# systemctl enable sshd.service
		# systemctl start sshd.service
	RedHat/CentOS/Oracle
		# chkconfig sshd on
		# service sshd restart

. Activate xinetd (for git:// access)
	systemd based distributions:
		# systemctl enable xinetd.service
		# systemctl start xinetd.service
	RedHat/CentOS/Oracle
		# chkconfig xinetd on
		# service xinetd restart

. Configure PostgreSQL server
	Fedora:
		# systemctl enable postgresql.service
		# export PGSETUP_INITDB_OPTIONS="--data-checksums" # recommended
		# postgresql-setup --initdb # (TAKE CARE! YOU MAY DESTROY ALL YOUR DATA!)
		# systemctl start postgresql.service
	RedHat/CentOS/Oracle
		# chkconfig postgresql on
		# service postgresql initdb
		# service postgresql start

. Create a PostgreSQL user and database
	# su - postgres
	$ createuser --createdb --no-createrole --no-superuser rocketgit
	$ createdb -O rocketgit rocketgit

. Allow access to PostgreSQL and restart:
	Add the following lines, before wildcard matches, in
	/var/lib/pgsql/data/pg_hba.conf:
	local	rocketgit	rocketgit			trust
	host 	rocketgit	rocketgit	127.0.0.1/32	trust
	host 	rocketgit	rocketgit	::1/128		trust

	systemd based distributions:
		# systemctl reload postgresql.service
	RedHat/CentOS/Oracle
		# service postgresql reload

	Notes:
	- Check also the config file (/etc/rocketgit/config.php) and set
	correctly the rg_sql string.
	- If the web server and the db are not on the same host, you need to
	replace 127.0.0.1 and ::1 with your "safe network". You may want to use
	md5 for authentication. Also, you may want to change 'listen_addresses'
	to '*'. You may also want to activate SSL.

. Mail
	To be able to generate e-mails as other user, you have to:
	For sendmail:
		- Enable daemon:
			systemd based distributions: systemctl enable sendmail.service
			RedHat/CentOS/Oracle: chkconfig sendmail on
		- Edit /etc/mail/trusted-users and add 'rocketgit' and 'apache'.
		- Restart daemon:
			systemd based distributions: systemctl restart sendmail.service
			RedHat/CentOS/Oracle: service sendmail restart

. Edit firewall to permit ssh, git, http and https ports
	In /etc/sysconfig/iptables (IPv4) and ip6tables (IPv6), add something
	like this:
	-A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
	-A INPUT -m tcp -p tcp --dport git -j ACCEPT
	-A INPUT -m tcp -p tcp --dport http -j ACCEPT
	-A INPUT -m tcp -p tcp --dport https -j ACCEPT

. Point your browser to the newly created server and you will be asked to
	create the admin account.

. You may want to install 'qrencode' package to be able to be able to see the
	two factor authentication keys as QR images.


== Thanks ==
. Special thanks to my family that supports me in this project.
. Special thanks to my brother that contributed brain and time to this project.
. Special thanks to git people for the best tool to manage the sources.
. Special thanks to Petre Bandac for free hosting of rg2 server.
. Special thanks to a lot of people that came with suggestions.
. Special thanks to gitosys, Gitorious and other projects from where I learned
	things.
. Special thanks to OWASP for their good documentation on how to write a
	secure web application.
. See AUTHORS file for all the people who contributed to this project.
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master