-
-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add self-hosting documentation #419
Changes from 18 commits
a0084b0
9ad4023
fc851bc
89f9165
3368605
6c784e3
6e5fa83
d821fc1
f010069
c4e5ba4
0bb7abe
1f64e53
df4ad52
3a2a071
5a17baf
f2db0be
1b2525d
4ce6f92
76ad692
b628a6c
a85e4ad
d3f5aef
b76a19a
d0a8e5a
68b76c7
8e695eb
a009b59
26c8702
48dd2fd
98d1867
349074b
a3b86e7
1fa9ff5
b0c9d86
a601556
03fe6fc
0d54d45
b415d27
7847591
60715a3
8134d3f
7881aa3
2f5404a
20bbf9e
236e54e
15671f4
7d464a4
f94cbd7
c1398c5
2be1df0
c3f23a4
bd90456
10e6d78
8bbf93a
e6c6986
ffb2654
1289fc1
194f438
0ffff35
b7d5010
1b6d057
a2d56f7
bdcf1f7
f1338de
a958137
8f74d7e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,83 @@ | ||||||||||||||
--- | ||||||||||||||
toc_max_heading_level: 4 | ||||||||||||||
--- | ||||||||||||||
|
||||||||||||||
# Self-Hosting | ||||||||||||||
|
||||||||||||||
Projects often encounter a constraint or requirement which make free-tier hosted CI/CD instances | ||||||||||||||
insufficient for their needs. In these cases hosting your own CI/CD runner can be a viable solution | ||||||||||||||
to premium-tier services or subscriptions. Self-hosting may also provide access to resources that | ||||||||||||||
are simply not available on many CI/CD services such as GPUs, faster drives, and newer CPU models. | ||||||||||||||
|
||||||||||||||
There are many ways to self-host CI/CD runners, and which one is best for you will depend on your on | ||||||||||||||
situation and constraints. For the purpose of this guide we will make the following assumptions: | ||||||||||||||
|
||||||||||||||
- User already has their own hardware 💻 | ||||||||||||||
- Budget is $0 💸 | ||||||||||||||
- FOSS tools should be prioritized where possible 🛠️ | ||||||||||||||
- We define `Self-Hosting` in this context to refer to a user taking responsibilty for the | ||||||||||||||
operating-system level configuration and life-cycle-management of a given compute resource (metal, | ||||||||||||||
on-prem, cloud VM, VPS etc...) 📜 | ||||||||||||||
cloudymax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
|
||||||||||||||
## Requirements | ||||||||||||||
|
||||||||||||||
This guide is tested for compatibility on devics which meet the following requirements: | ||||||||||||||
|
||||||||||||||
- x86 or amd64 processor | ||||||||||||||
- Ubuntu 22.04 LTS Server or Debian 12 Bookworm | ||||||||||||||
- root access | ||||||||||||||
- Network connectivity | ||||||||||||||
- Nvidia GPU (required for GPU Acceleration) | ||||||||||||||
cloudymax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
|
||||||||||||||
## Finding a Host | ||||||||||||||
|
||||||||||||||
The "Host" is the computer which will execute the runner program. This can be a desktop computer, | ||||||||||||||
cloudymax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
laptop, Virtual Machine, or VPS from a cloud provider. If your host is cloud-instance then the OS | ||||||||||||||
and admin user should already exist. Move on to the provisioning section for further instructions. | ||||||||||||||
If your host is a local machine, perform a clean installation of the operating system using the | ||||||||||||||
cloudymax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
following guides: | ||||||||||||||
|
||||||||||||||
Ubuntu: | ||||||||||||||
|
||||||||||||||
- Download the Ubuntu 22.04 LTS server installer | ||||||||||||||
[HERE](https://ftp.snt.utwente.nl/pub/os/linux/ubuntu-releases/22.04.3/ubuntu-22.04.3-live-server-amd64.iso) | ||||||||||||||
cloudymax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
- [Install Ubuntu 22.04 LTS on a local machine](https://ostechnix.com/install-ubuntu-server/) | ||||||||||||||
|
||||||||||||||
Debian: | ||||||||||||||
|
||||||||||||||
- Download the Debain 12 installer | ||||||||||||||
[HERE](https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-12.1.0-amd64-DVD-1.iso) | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Note the typo in Debian |
||||||||||||||
- [Install Debian on a local system](https://www.linuxtechi.com/how-to-install-debian-11-bullseye/) | ||||||||||||||
|
||||||||||||||
## Provisioning the Host | ||||||||||||||
|
||||||||||||||
Once you can sign into your host, follow the appropriate guide to complete the provisioning process. | ||||||||||||||
Note that the Nvidia driver and container-toolkit installation are only required for GPU | ||||||||||||||
acceleration. Skip those steps if you do require that functionality. | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||
|
||||||||||||||
- [Ubuntu 22.04 Setup](./ubuntu-setup) | ||||||||||||||
|
||||||||||||||
- [Debian 12 Setup](./debian-setup) | ||||||||||||||
|
||||||||||||||
## Splitting the Host | ||||||||||||||
|
||||||||||||||
You may find yourself with the requirement for multiple runners, runners of differing | ||||||||||||||
configurations, or different operating systems but only have access to a single Host. In this case, | ||||||||||||||
you can split your Host into multiple runners using virtualization. If this applies to you, complete | ||||||||||||||
the provisioning step and then follow the [Virtual Machines Guide](./virtual-machines). | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In case people don't navigate back here, might it be useful to simplify this text into a single line and append it to the bottom of the provisioning steps? For example:
Also, since guides are a first class citizen on this website it doesn't really need to be a keyword and use lowercase |
||||||||||||||
|
||||||||||||||
## Installing the Runner Software | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||
|
||||||||||||||
- [Github Actions](./github-actions) | ||||||||||||||
|
||||||||||||||
- [GitLab Pipelines](./gitlab-pipelines) | ||||||||||||||
|
||||||||||||||
- CircleCI (ToDo) | ||||||||||||||
|
||||||||||||||
- Argo Workflows (ToDo) | ||||||||||||||
|
||||||||||||||
- Jenkins (ToDo) | ||||||||||||||
|
||||||||||||||
- Ansible/Semaphore/AWX (ToDo) | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps we can convert this from technical to functional language by using words like "not yet supported" |
||||||||||||||
|
||||||||||||||
## Update Workflows | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please only use this configuration to change the default if you really need it. Recommend getting rid of them for all files unless you can not use better headings and need to override it.