Tuesday, March 3, 2020

Setup Gitea on Windows

Gitea is an open source project that supports to make a self-hosted Git service. There are many free Git services like Github but when you host a private Git project, you must pay. So Gitea is one of the best choices when you need to manage private Git projects on your own on-prem version control server.

In previous article, I show howto setup Git Server on Windows with OpenSSH. In this article, I will show howto setup Gitea on Windows.

1. Download & Install Gitea
Select a latest Gitea built for Windows and download it from: https://dl.gitea.io/gitea (e.g. gitea-1.9.6-windows-4.0-386.exe depending on your Windows).
Copy this file to a folder (e.g. C:\Gitea) and rename it to gitea.exe.
Run C:\Gitea\gitea.exe from Windows cmd:


Go to http://127.0.0.1:3000/ to configure initial configuration database. Gitea supports Microsoft SQL, MySQL, PostgreSQL and SQLite databases. Click "Sign In" button on the top left, then choose a database type you had, for me I select MSSQL:


Fill in necessary info. In Optional Settings >> Administrator Account Settings, let add an username (e.g. giteaadmin), it will be used as the administrator account for Gitea.

Then click "Install Gitea" button. After that you can sign in to the Gitea portal.
To change settings, you can modify the file C:\Gitea\custom\conf\app.ini, for example I add below lines to make English as default language for the Gitea portal:
[i18n]
LANGS = en-US
NAMES = English
2. Run Gitea as Windows service
To start Gitea portal, you must run C:/Gitea/gitea.exe from Windows cmd or PowerShell. For convinient, let create a Windows service to start it automatically.
Terminate C:/Gitea/gitea.exe if it is running, open Windows cmd as Administrator and run the following command:
sc create GiteaService start= auto binPath= ""C:\Gitea\gitea.exe" web --config "C:\Gitea\custom\conf\app.ini""
Open Windows Services and start GiteaService, then open website http://localhost:3000/ to check if working.

3. Create project repo and add user (collaborator)
Sign-in with admin user, on the Dashboard >> Repository area click + button to add new project repo:

Fill in project info:

Click "Create Repository" button. Now you have a repo for your project. Creator will be administrator for this repo as default.
Next let create user and add it to the project. Go to Site Administration >> User Accounts >> click Create User Account button to create new user:


Open the project, from its Settings >> Collaborators >> key the username of collaborator then click Add Collaborator button: 


4. Work as a collaborator on Git portal
Create user for each collaborator (developer). On the PC of collaborator, open Gitea portal via link: http://<IP server>:3000/ (e.g. http://192.168.10.101:3000/).
In case of you want to access your projects via Internet, you can setup https with a domain. See guidelines here:  https://docs.gitea.io/en-us/https-setup/
In case of you just want to access your projects within your LAN/VPN, you can simply use server IP.
After login, each developer will see projects joined. For example:

Pay attention on the http link of Git project, e.g.: http://localhost:3000/itgitad/TestProject.git
Replace localhost by server IP (e.g. http://192.168.10.101:3000/itgitad/TestProject.git) ==> you will have the right link of this Git project for working in local repo.

On this portal, developer can use functions like on GitHub.com. Oh lala...

5. Work on local repo
On your computer, open Windows cmd, cd to the folder that you want to make a local repo for your project, run the following commands:
git init
git remote add origin http://192.168.10.101:3000/itgitad/TestProject.git
git pull origin master
After above commands, it will download latest info + source from remote repo to your local repo. Change/add a file, then push to the server:
git add NewFile.txt
git commit -m "add NewFile"
git push origin master
It will pop up to ask username & password ==> enter username & passowrd created ont the Gitea web portal. Now open the Gitea portal, you will see NewFile.txt.

You can use Visual Studio Code for working with your Git project.
Have a fun when reading. Bye!

Monday, February 24, 2020

Git Server on Windows with OpenSSH, Remote and Local Repository

1. What is Git Server?
It is a server installed Git service. In which, Git is a distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
In this article, I will guide you step by step to setup a Git Server on Windows with OpenSSH.

2. What is Remote & Local Repository?
Remote Repository is a repository on a server where source codes from developers are centralized. While Local Repository is a repository cloned (copied) from Remote Repository to developer's computer (client).
The following picture will illustrate how repositories working.


3. Required tools
+Win32 OpenSSH
+Git for Windows

4. Install Git for Windows
Go to Git for Windows, select & download suitable version for your Windows (32-bit or 64-bit).
Installing it with option "Use Git and optional Unix tools from the Command Prompt" and "Use the OpenSSL library".



After installing, open Windows cmd or Git bash run below command to check if it is installed ok:
git --version
5. Install OpenSSH
Go to Win32 OpenSSH, select & download a suitable version for your Windows. Unpack it to a folder (e.g. C:\OpenSSH).
Run Windows PowerShell as Administrator right, change to the OpenSSH folder, then run below command to install:
powershell -ExecutionPolicy ByPass -File install-sshd.ps1
See the following picture for more details:


Open Windows Services then set OpenSSH SSH Server & OpenSSH Authetication Agent to Automatic  and start them.

Because OpenSSH use port 22 by default, so you must open this port on your Windows firewall. You can change the SSH service port value (e.g. Port 1235) in its config file: C:\OpenSSH\sshd_config_default. If you change the port, remember open the firewall for new port and restart SSH services.

To check if the OpenSSH server is working, on a client computer download PuTTY tool and connect to the SSH server via its IP and a Windows user on the server.
In case your client computer already had ssh client, you can use Windows cmd to connect to the server. If your client doesn't have, you can install Win32 OpenSSH on the client. See below picture for sample of checking SSH connection.

Every time you connect to the SSH server, it requires to input password. To avoid password, you can use Public & Private keys for authenticating. Let generate these keys on your clients by using ssh-keygen tool, for example:
ssh-keygen -t rsa -b 4096
It will generate 2 files: id_rsa and id_rsa.pub in SSH folder of Windows user on the client (C:\Users\<username>\.ssh). Remember let passphrase as empty (key enter) when it asks you key in, it will help you skip to enter passphrase every time you connect to the server. Copy id_rsa.pub file to the SSH folder of Windows user on the server (C:\Users\<username>\.ssh) and rename it to authorized_keys. Then on the server, right click on this file and make sure removing rights of all users except Administrators and SYSTEM, for example:


On the server, verify if file C:\ProgramData\ssh\sshd_config (file config of SSH service) has below lines uncommented:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
If not, let uncomment them then restart OpenSSH SSH Server. Try again with ssh username@computername_or_IP, it will login to SSH Server without entering any password/passphrase.

6. Create Remote Repository (central repo)
On the server, for existing source folder, you can run below commands from Windows cmd:
cd D:\mygit\my_central_repo
git init --bare
Or create new central repo by command:
git clone --bare D:\mygit\my_central_repo
On the client, create a folder and add remote repository into:
cd E:\local_repo
git init
git remote add origin hunglv@192.168.10.101:D:/mygit/my_centro_repo
In which origin is a name standfor remote repo. Next you must run 2 below work arround commands to set powershell as default Shell in registry:
git config --local remote.origin.uploadpack "powershell git-upload-pack"
git config --local remote.origin.receivepack "powershell git-receive-pack"
Now you can fetch remote repo to your local repo for working:
git fetch origin
OK, you have done the setup for Git Server on Windows with OpenSSH, Remote and Local Repository. Next is common Git commands that are often used.

7. Basic Git commands
git fetch <remote name> <branch>: fetching repo versioning data from remote repo to local repo
git pull <remote name> <brannch>: get all (included new files & merge updated files) from remote repo to local
git add <file>: add new file to local repo
git commit -m <"message">: commit all updates / news to your local repo
git push <remote> <branch>: push all updates / news from your local repo to remote repo
git remote -v: see remote repo linked
git status: check status / changes in local repo

The end for this article. Hope you can start your projects on Git easily.
Any comment is welcome. Bye!
Subscribe to RSS Feed Follow me on Twitter!