mirror of
https://codeberg.org/alpine/alpine-wiki.git
synced 2023-08-25 13:53:16 +02:00
tutorials - servers - gitea in profesional way
* complete guide with profesional way.. at 70% * provide all need and multi instances * fixed the crap made in alpíne wiki
This commit is contained in:
parent
a56867f254
commit
b7b67ee86b
381
tutorials/professionalway/server-alpine-gitea-professional.md
Normal file
381
tutorials/professionalway/server-alpine-gitea-professional.md
Normal file
@ -0,0 +1,381 @@
|
|||||||
|
# alpine server gitea
|
||||||
|
|
||||||
|
Gitea is a community managed lightweight code hosting solution written in Go.
|
||||||
|
It is a fork of Gogs.
|
||||||
|
|
||||||
|
## Clarifications
|
||||||
|
|
||||||
|
1. Gitea was created by a group of users and contributors of the self-hosted Git service Gogs,
|
||||||
|
It is a fork of Gogs and is written in Go.
|
||||||
|
2. There's two ways to deploy, server real one and docker containerized one, best
|
||||||
|
performance its server real, and most isolated one are dockerizer way..
|
||||||
|
3. If even though docker always uses Alpine linux as images, and the software is
|
||||||
|
alpine packages, it still has nothing to do with using alpine specific commands.
|
||||||
|
4. Git is the version control system (VCS) software behind gitea perse, so must
|
||||||
|
be installed first. But repositories on server are not same as in clients.. server
|
||||||
|
repositories are bare repositories.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
* OS required tools:
|
||||||
|
* bash
|
||||||
|
* grep
|
||||||
|
* lsof
|
||||||
|
* less
|
||||||
|
* curl
|
||||||
|
* attr
|
||||||
|
* CVS command line
|
||||||
|
* git
|
||||||
|
* git-lfs
|
||||||
|
* Database backend:
|
||||||
|
* sqlite
|
||||||
|
* mysql
|
||||||
|
* postgresql
|
||||||
|
* Auth and security:
|
||||||
|
* mail
|
||||||
|
* gnupg
|
||||||
|
* openssl
|
||||||
|
* pip
|
||||||
|
* Packages publish:
|
||||||
|
* curl
|
||||||
|
* docker
|
||||||
|
|
||||||
|
## Preparations
|
||||||
|
|
||||||
|
A hostname is a unique name created to identify a machine on a network,
|
||||||
|
configured in `/etc/hostname`. (make sure to replace "giteahost" with your desired hostname):
|
||||||
|
|
||||||
|
```
|
||||||
|
hostname giteahost
|
||||||
|
|
||||||
|
echo 'hostname="giteahost"' > /etc/conf.d/hostname
|
||||||
|
|
||||||
|
echo "giteahost" > /etc/hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
You should also add the hostname to your hosts file (/etc/hosts), to
|
||||||
|
obtain the best results if you have in internat network without DNS.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
cat > /etc/hosts << EOF
|
||||||
|
127.0.0.1 giteahost.mydomain.com giteahost localhost.localdomain localhost
|
||||||
|
::1 localhost localhost.localdomain
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > /tmp/tmp.tmp << EOF
|
||||||
|
127.0.1.1 giteahost.mydomain.com giteahost
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sed -i '/127.0.0.1/ r /tmp/tmp.tmp' /etc/hosts && rm /tmp/tmp.tmp
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Gitea is a golang build application, so practically has no dependencies, but
|
||||||
|
for minimal good working instance you should considered minimal installation
|
||||||
|
packages. But due is a production server this will lack of doc, manpages and make packages.
|
||||||
|
|
||||||
|
1. added and update normal repositories
|
||||||
|
2. install direct dependences: git, gnupg, bash, coreutils
|
||||||
|
3. install indirect dependences: grep, lsof, less, curl, binutils, attr
|
||||||
|
4. setup the user of the gitea
|
||||||
|
|
||||||
|
```
|
||||||
|
cat > /etc/apk/repositories << EOF; $(echo)
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
|
||||||
|
EOF
|
||||||
|
|
||||||
|
apk update
|
||||||
|
|
||||||
|
apk add bash coreutils grep lsof less curl binutils dialog attr
|
||||||
|
|
||||||
|
apk add git git-lfs gnupg gnupg1 sqlite sqlite libs openssl
|
||||||
|
|
||||||
|
export PAGER=less
|
||||||
|
```
|
||||||
|
|
||||||
|
This guide does work either if are or not in main or edge the gitea package,
|
||||||
|
take note, do not install any more from edge.. so in fact all gitea dependencies
|
||||||
|
must be listed and installed before gitea and edge brand are activated, so the following process will guide and show you how to do that; first gain root privileges or access ssh to your alpine server and then:
|
||||||
|
|
||||||
|
4. alternate edge repositories (do that only if your alpine version are over 3.9)
|
||||||
|
5. install gitea from edge repository
|
||||||
|
6. restore normal repository
|
||||||
|
|
||||||
|
```
|
||||||
|
cat >> /etc/apk/repositories << EOF; $(echo)
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/edge/main
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||||
|
EOF
|
||||||
|
|
||||||
|
apk update --allow-untrusted
|
||||||
|
|
||||||
|
apk add gitea --allow-untrusted
|
||||||
|
|
||||||
|
cat > /etc/apk/repositories << EOF; $(echo)
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
|
||||||
|
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
|
||||||
|
EOF
|
||||||
|
|
||||||
|
apk update --allow-untrusted
|
||||||
|
```
|
||||||
|
|
||||||
|
**WARNING** if your version of alpine are more ancient like 3.6 or 3.8, do not use
|
||||||
|
the edge version, it need upgrading almost to alpine 3.10 to use it, so if you
|
||||||
|
are using a older hardware not supported by recent linux kernel, upgrade to alpine 3.10
|
||||||
|
and then you can follow this manual. Otherwise just avoit the edge swicht and
|
||||||
|
install the normal already provided older gitea package.
|
||||||
|
|
||||||
|
|
||||||
|
## Configurations
|
||||||
|
|
||||||
|
Gitea configurations are defined by the gitea service scrip, after install
|
||||||
|
need a backend database, and also a dedicated user, also has configurations files.
|
||||||
|
|
||||||
|
| Artifac | Name | Defaults or packaged | Customizable |
|
||||||
|
| --------------- | ---------------- | ----------------------- | ------------ |
|
||||||
|
| Binary program | gitea | `/usr/bin/gitea` | no |
|
||||||
|
| Daemon script | gitea | `/etc/init.d/gitea` | no |
|
||||||
|
| Daemon user | gitea | `/var/lib/gitea/` | no |
|
||||||
|
| Group user | www-data | `/var/www/` | no |
|
||||||
|
| Working dir | GITEA_WORK_DIR | `/var/lib/gitea/` | yes |
|
||||||
|
| Customizing | GITEA_CUSTOM | `/var/lib/gitea/custom/` | yes,depends |
|
||||||
|
| Config global | gitea.ini | `/etc/gitea/app.ini` | yes,depends |
|
||||||
|
| Web files | STATIC_ROOT_PATH | `/usr/share/webapps/gitea/` | no |
|
||||||
|
| Data files | APP_DATA_PATH | `/var/lib/gitea/data/` | depends |
|
||||||
|
| Git repositories | GITEA_GIT_DIR | `/var/lib/gitea/git` | yes |
|
||||||
|
| Loggin files | internally | `/var/log/gitea` | no |
|
||||||
|
| Database files | Sqlite/MariaDB/PG | `/var/lib/gitea/db/gitea.db` | yes |
|
||||||
|
|
||||||
|
**Gitea runs as `gitea` user, and `www-data` group**, so are compatible with any web
|
||||||
|
deploy in system webservers packages of alpine repositories, but not with any
|
||||||
|
other external installation if does not are same as.
|
||||||
|
|
||||||
|
Gitea has two configuration files, the system defaults at `/var/lib/gitea/conf/app.ini`
|
||||||
|
and modifiable package defaults, at `/etc/gitea/app.ini`. Original files are
|
||||||
|
in `/usr/share/webapps/gitea` and are defaults non-modifiable.
|
||||||
|
|
||||||
|
**Gitea can be customized**: just take same path from `/usr/share/webapps/gitea/` and
|
||||||
|
put in same manner at `/var/lib/gitea/custom/` place.
|
||||||
|
|
||||||
|
For alterations see next sections where are defined initialization, customization and configurations.
|
||||||
|
|
||||||
|
## Initialization
|
||||||
|
|
||||||
|
Gitea just after install does not need many configurations, the daemon service
|
||||||
|
will init all the needs, but forced setup gui will be need after initialize
|
||||||
|
|
||||||
|
1. start from init script
|
||||||
|
2. make enable the init script
|
||||||
|
3. check the runing service
|
||||||
|
4. visit the gitea service using your web browser
|
||||||
|
|
||||||
|
```
|
||||||
|
service gitea start
|
||||||
|
|
||||||
|
rc-update add gitea default
|
||||||
|
|
||||||
|
service gitea status
|
||||||
|
```
|
||||||
|
|
||||||
|
After check that is "running" you must setup graphically using a web browser,
|
||||||
|
poiting to `http://localhost:3000`, in the case of this document should be
|
||||||
|
pointing to `http://giteahost.mydomain.com:3000` and a web landing will show.
|
||||||
|
|
||||||
|
## Post install
|
||||||
|
|
||||||
|
Using your web browser and pointing to the gitea url path, you will be
|
||||||
|
redirected to the post install page, but first you must prepare the
|
||||||
|
backend database to be used by the service:
|
||||||
|
|
||||||
|
#### Post installation with sqlite
|
||||||
|
|
||||||
|
There's no need of preparation, just proceed to "post installation process" section.
|
||||||
|
|
||||||
|
#### Post installation with mysql
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
#### Post installation with postgresql
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
#### Post install process
|
||||||
|
|
||||||
|
The post-installation process happends when you visit the url with the browser.
|
||||||
|
|
||||||
|
**The post install page**, will be displayed and only are show when try to use
|
||||||
|
the system for the first time, away of the starting page, by example if browse
|
||||||
|
the repositories or try to login. You must not forgotten to setup that final
|
||||||
|
installation process.
|
||||||
|
|
||||||
|
**Database configs** will be depending of the choice made in the steps avobe,
|
||||||
|
just give the required credentials, only the case of sqlite does not need complications.
|
||||||
|
|
||||||
|
**Administrator account** must be configured before push "install gitea", the
|
||||||
|
button at the end of the post-configuration page when you first visit the installation.
|
||||||
|
Provide an username for admin user, take note "admin" are a reserved word so
|
||||||
|
choose another name. after provide passowrd you will continue the installation.
|
||||||
|
|
||||||
|
**Redirection to landing** can be a problem cos after proceed the service of gitea
|
||||||
|
will try to send to "localhost", to fix that, just go to the config file
|
||||||
|
at the key value of `ROOT_URL` and check not contains "localhost" in it, change
|
||||||
|
to the web url of the server in this case document is `http://giteahost.mydomain.com:3000`
|
||||||
|
|
||||||
|
**Theme and templates** are already mentioned in the configuration section,
|
||||||
|
just take same path from `/usr/share/webapps/gitea/` and put in same manner
|
||||||
|
at `/var/lib/gitea/custom/` place, by example to customize default landing page,
|
||||||
|
just take a copy of the `/usr/share/webapps/gitea/templates/home.tmpl` and put
|
||||||
|
modified one at `/var/lib/gitea/custom/templates/home.tmpl` as well.
|
||||||
|
|
||||||
|
|
||||||
|
## Tunning instances
|
||||||
|
|
||||||
|
Gitea is a single application and can work as instanciating a working path,
|
||||||
|
so means you can run as normal application or as system service, inclusive
|
||||||
|
you can also run multiple instances in sabe server:
|
||||||
|
|
||||||
|
#### System running
|
||||||
|
|
||||||
|
Gitea binary itselt cannot be start alone, without parameters will put lot of
|
||||||
|
directories and files in the default current path, so to start to use must be
|
||||||
|
using the service from the package.
|
||||||
|
|
||||||
|
1. Start from init script!
|
||||||
|
2. Make enabled the init script!
|
||||||
|
3. Stop from init script
|
||||||
|
|
||||||
|
```
|
||||||
|
rc service gitea start
|
||||||
|
|
||||||
|
rc-update add gitea default
|
||||||
|
```
|
||||||
|
|
||||||
|
To stop just run `rc-service gitea stop`
|
||||||
|
|
||||||
|
#### Standard running
|
||||||
|
|
||||||
|
A manual start without init script can be done but its recommended to
|
||||||
|
indicate to use the files installed on the system (by example) as is:
|
||||||
|
|
||||||
|
1. stop any running instance
|
||||||
|
2. make a command to run with proper arguments
|
||||||
|
|
||||||
|
```
|
||||||
|
rc-service gitea stop
|
||||||
|
|
||||||
|
GITEA_WORK_DIR='/var/lib/gitea' /usr/bin/gitea web --config /etc/gitea/app.ini
|
||||||
|
```
|
||||||
|
|
||||||
|
This commands will start the gitea manually as standar alone, but
|
||||||
|
will use the config files and installed files from the package.
|
||||||
|
|
||||||
|
#### Multiple instances
|
||||||
|
|
||||||
|
As same manner you can setup multiple instances of gitea, by many ways:
|
||||||
|
|
||||||
|
* By just run "Standar" command with specific alternate config files, but using new user
|
||||||
|
* By just run "Service" fork new unit file with alternate config files, but using new user
|
||||||
|
|
||||||
|
By example to run another instance using the system files as starting
|
||||||
|
point **as Standard alone** application:
|
||||||
|
|
||||||
|
1. stop the main daemon
|
||||||
|
2. added a shell restricted and setup a new restricted user for instance of gitea "2"
|
||||||
|
3. create the new user that will run the another instance of gitea
|
||||||
|
4. copy the config file to use as template config file for instance of gitea "2"
|
||||||
|
5. create directories for future new files of the instance tha will run
|
||||||
|
6. change the variables and configuration to point to the new user of the instance
|
||||||
|
7. fix and set right permissions for the new user of the instance "2"
|
||||||
|
8. run the new instance **as "Standard" alone** instance named gitea "2"
|
||||||
|
|
||||||
|
```
|
||||||
|
rc-service gitea stop
|
||||||
|
|
||||||
|
apk add tcsh
|
||||||
|
|
||||||
|
add-shell '/bin/csh'
|
||||||
|
|
||||||
|
adduser -S -D -h /var/lib/gitea2 -s /bin/bash -g '' gitea2
|
||||||
|
|
||||||
|
cp /etc/gitea/app.ini /var/lib/gitea2/gitea2.ini
|
||||||
|
|
||||||
|
mkdir -p /var/lib/gitea2/db
|
||||||
|
mkdir -p /var/lib/gitea2/log
|
||||||
|
sed -i -r 's#ROOT = /.*#ROOT = /var/lib/gitea2/git#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#RUN_USER.*#RUN_USER = gitea2#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#APP_DATA_PATH.*#APP_DATA_PATH = /var/lib/gitea2/data#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#PATH = /.*#PATH = /var/lib/gitea/db/gitea2.db#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#^ROOT_PATH = /.*#ROOT_PATH = /var/lib/gitea2/log#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
|
||||||
|
chown -R gitea2:www-data /var/lib/gitea2
|
||||||
|
chmod 0755 /var/lib/gitea2/db
|
||||||
|
chmod 0755 /var/lib/gitea2/log
|
||||||
|
chmod 0755 /var/lib/gitea2
|
||||||
|
|
||||||
|
GITEA_WORK_DIR='/var/lib/gitea2' /usr/bin/gitea web --config /var/lib/gitea2/gitea2.ini
|
||||||
|
```
|
||||||
|
|
||||||
|
By example to run another instance using the system files as starting
|
||||||
|
point **as System running** application:
|
||||||
|
|
||||||
|
1. stop the main daemon and setup a new restricted user for instance of gitea "2"
|
||||||
|
2. create the new user that will run the another instance of gitea
|
||||||
|
3. copy the config file to use as template config file for instance of gitea "2"
|
||||||
|
4. create directories for future new files of the instance tha will run
|
||||||
|
5. change the variables and configuration to point to the new user of the instance
|
||||||
|
6. copy the unit service to use a new service template
|
||||||
|
7. change the variables and configuration to point to the new instance user
|
||||||
|
8. fix and set right permissions for the new user of the instance "2"
|
||||||
|
9. run the new instance **as "Standard" alone** instance named gitea "2"
|
||||||
|
|
||||||
|
```
|
||||||
|
rc-service gitea stop
|
||||||
|
|
||||||
|
apk add tcsh
|
||||||
|
|
||||||
|
add-shell '/bin/csh'
|
||||||
|
|
||||||
|
adduser -S -D -h /var/lib/gitea2 -s /bin/bash -g '' gitea2
|
||||||
|
|
||||||
|
cp /etc/gitea/app.ini /var/lib/gitea2/gitea2.ini
|
||||||
|
|
||||||
|
mkdir -p /var/lib/gitea2/db
|
||||||
|
mkdir -p /var/lib/gitea2/log
|
||||||
|
sed -i -r 's#ROOT = /.*#ROOT = /var/lib/gitea2/git#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#RUN_USER.*#RUN_USER = gitea2#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#APP_DATA_PATH.*#APP_DATA_PATH = /var/lib/gitea2/data#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#PATH = /.*#PATH = /var/lib/gitea/db/gitea2.db#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
sed -i -r 's#^ROOT_PATH = /.*#ROOT_PATH = /var/lib/gitea2/log#g' /var/lib/gitea2/gitea2.ini
|
||||||
|
|
||||||
|
cp /etc/init.d/gitea /etc/init.d/gitea2
|
||||||
|
|
||||||
|
sed -i -r 's#name=.*#name=gitea2#g' /etc/init.d/gitea2
|
||||||
|
sed -i -r 's#command_user=.*#command_user=gitea2#g' /etc/init.d/gitea2
|
||||||
|
sed -i -r 's#/etc/gitea/app.ini#/var/lib/gitea2/gitea2.ini#g' /etc/init.d/gitea2
|
||||||
|
sed -i -r 's#/var/lib/gitea#/var/lib/gitea2#g' /etc/init.d/gitea2
|
||||||
|
sed -i -r 's#/var/log/gitea#/var/lib/gitea2/log#g' /etc/init.d/gitea2
|
||||||
|
sed -i -r 's#/run/gitea.pid#/run/gitea2.pid#g' /etc/init.d/gitea2
|
||||||
|
|
||||||
|
chown -R gitea2:www-data /var/lib/gitea2
|
||||||
|
chmod 0755 /var/lib/gitea2/db
|
||||||
|
chmod 0755 /var/lib/gitea2/log
|
||||||
|
chmod 0755 /var/lib/gitea2
|
||||||
|
|
||||||
|
rc service gitea2 start
|
||||||
|
|
||||||
|
rc-update add gitea2 default
|
||||||
|
```
|
||||||
|
|
||||||
|
**CAUTION** if you runs multiple instances, each one must have different port,
|
||||||
|
this means you must check in the config `app.ini` file (like the `gitea2.ini` )
|
||||||
|
that after the póst setup procedure, the port are correct and different, if not just,
|
||||||
|
before or after change it with `HTTP_PORT` and `ROOT_URL` keys.
|
||||||
|
|
||||||
|
## see also
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user