forked from vieter-v/vieter
				
			docs: rewrote installation page
							parent
							
								
									5df5850044
								
							
						
					
					
						commit
						4ecf6a11c4
					
				
							
								
								
									
										37
									
								
								README.md
								
								
								
								
							
							
						
						
									
										37
									
								
								README.md
								
								
								
								
							|  | @ -22,13 +22,6 @@ a while now. I wanted a fast language that I could code while relaxing, without | |||
| having to exert too much mental effort & V seemed like the right choice for | ||||
| that. | ||||
| 
 | ||||
| ### Compiler | ||||
| 
 | ||||
| Vieter compiles with the standard Vlang compiler. However, I do maintain a | ||||
| [mirror](https://git.rustybever.be/Chewing_Bever/v). This is to ensure my CI | ||||
| does not break without reason, as I control when & how frequently the mirror is | ||||
| updated to reflect the official repository. | ||||
| 
 | ||||
| ## Features | ||||
| 
 | ||||
| * Arch repository server | ||||
|  | @ -41,20 +34,24 @@ updated to reflect the official repository. | |||
| 
 | ||||
| ## Building | ||||
| 
 | ||||
| In order to build Vieter, you'll need a couple of libraries: | ||||
| Besides a V installer, Vieter also requires the following libraries to work: | ||||
| 
 | ||||
| * An installation of V | ||||
| * gc | ||||
| * libarchive | ||||
| * openssl | ||||
| * sqlite3 | ||||
| 
 | ||||
| **NOTE**: if you encounter any issues compiling Vieter using the absolute | ||||
| latest version of V, it might be because my mirror is missing a specific commit | ||||
| that causes issues. For this reason, the `make v` command exists which will | ||||
| clone my compiler in the `v` directory & build it. Afterwards, you can use this | ||||
| compiler with make by prepending all make commands with `V_PATH=v/v`. If you do | ||||
| encounter this issue, please let me know so I can update my mirror & the | ||||
| codebase to fix it! | ||||
| ### Compiler | ||||
| 
 | ||||
| Vieter compiles with the standard Vlang compiler. However, I do maintain a | ||||
| [mirror](https://git.rustybever.be/vieter/v). This is to ensure my CI does not | ||||
| break without reason, as I control when & how frequently the mirror is updated | ||||
| to reflect the official repository. | ||||
| 
 | ||||
| If you encounter issues using the latest V compiler, try using my mirror | ||||
| instead. `make v` will clone the repository & build the mirror. Afterwards, | ||||
| prepending any make command with `V_PATH=v/v` tells make to use the locally | ||||
| compiled mirror instead. | ||||
| 
 | ||||
| ## Contributing | ||||
| 
 | ||||
|  | @ -70,7 +67,7 @@ If you wish to contribute to the project, please take note of the following: | |||
| 
 | ||||
| The `docs` directory contains a Hugo site consisting of all user & | ||||
| administrator documentation. `docs/api` on the other hand is a | ||||
| [slate](https://github.com/slatedocs/slate) project describing the HTTP web | ||||
| [Slate](https://github.com/slatedocs/slate) project describing the HTTP web | ||||
| API. | ||||
| 
 | ||||
| To modify the Hugo documentation, you'll need to install Hugo. Afterwards, you | ||||
|  | @ -81,8 +78,8 @@ can use the following commands inside the `docs` directory: | |||
| hugo | ||||
| 
 | ||||
| # Host an auto-refreshing web server with the documentation. Important to note | ||||
| is that the files will be at `http://localhost:1313/docs/vieter` instead of | ||||
| just `http://localhost:1313/docs/vieter` | ||||
| # is that the files will be at `http://localhost:1313/docs/vieter` instead of | ||||
| # just `http://localhost:1313/` | ||||
| hugo server | ||||
| ``` | ||||
| 
 | ||||
|  | @ -96,6 +93,6 @@ docker run \ | |||
|     -v $(pwd)/docs/api/source:/srv/slate/source slatedocs/slate serve | ||||
| ``` | ||||
| 
 | ||||
| This'll make the slate docs available at http://localhost:4567. Sadly, this | ||||
| This will make the Slate docs available at http://localhost:4567. Sadly, this | ||||
| server doesn't auto-refresh, so you'll have to manually refresh your browser | ||||
| every time you make a change. | ||||
|  |  | |||
|  | @ -6,7 +6,8 @@ theme = 'hugo-book' | |||
| 
 | ||||
| # Book configuration | ||||
| disablePathToLower = true | ||||
| enableGitInfo = true | ||||
| # Doesn't work with docs as subdir | ||||
| enableGitInfo = false | ||||
| 
 | ||||
| # Needed for mermaid/katex shortcodes | ||||
| [markup] | ||||
|  | @ -29,7 +30,7 @@ enableGitInfo = true | |||
| [menu] | ||||
| [[menu.after]] | ||||
|   name = "API Documentation" | ||||
|   url = "https://rustybever.be/docs/vieter/api" | ||||
|   url = "https://rustybever.be/docs/vieter/api/" | ||||
|   weight = 10 | ||||
| [[menu.after]] | ||||
|   name = "Man Pages" | ||||
|  | @ -69,7 +70,7 @@ enableGitInfo = true | |||
| 
 | ||||
|   # Set source repository location. | ||||
|   # Used for 'Last Modified' and 'Edit this page' links. | ||||
|   BookRepo = 'https://git.rustybever.be/Chewing_Bever/docs' | ||||
|   BookRepo = 'https://git.rustybever.be/vieter/vieter/docs' | ||||
| 
 | ||||
|   # (Optional, default 'commit') Specifies commit portion of the link to the page's last modified | ||||
|   # commit hash for 'doc' page type. | ||||
|  |  | |||
|  | @ -9,12 +9,9 @@ documentation might not be relevant anymore for the latest release. | |||
| 
 | ||||
| ## Overview | ||||
| 
 | ||||
| Vieter has a few main features: | ||||
| 
 | ||||
| * It's a simple & lightweight implementation of an Arch repository server | ||||
| * It allows for uploading of built package archives | ||||
| * It supports a basic build system to periodically re-build packages & upload | ||||
|   them to the server | ||||
| Vieter consists of two main parts, namely an implementation of an Arch | ||||
| repository server & a scheduling system to periodically build Pacman packages & | ||||
| publish them to a repository. | ||||
| 
 | ||||
| {{< hint info >}} | ||||
| **Note**   | ||||
|  | @ -26,12 +23,12 @@ well. | |||
| 
 | ||||
| ### Why? | ||||
| 
 | ||||
| Vieter is my personal solution for a problem I've been facing for months: | ||||
| Vieter is my personal solution to a problem I've been facing for months: | ||||
| extremely long AUR package build times. I run EndeavourOS on both my laptops, | ||||
| one of which being a rather old MacBook Air. I really like being a beta-tester | ||||
| for projects & run development builds for multiple packages (nheko, | ||||
| newsflash...). The issue with this is that I have to regularly re-build these | ||||
| packages in order to stay up to date with development & these builds can take a | ||||
| newsflash...). Because of this, I have to regularly re-build these packages in | ||||
| order to stay up to date with development. However, these builds can take a | ||||
| really long time on the old MacBook. This project is a solution to that | ||||
| problem: instead of building the packages locally, I can build them | ||||
| automatically in the cloud & just download them whenever I update my system! | ||||
|  |  | |||
|  | @ -3,76 +3,85 @@ weight: 10 | |||
| --- | ||||
| # Installation | ||||
| 
 | ||||
| Vieter consists of a single binary, akin to busybox. The binary's behavior is | ||||
| determined by its CLI arguments, e.g. `vieter server` starts the repository | ||||
| server. | ||||
| 
 | ||||
| All installation solutions can be configured the same way, | ||||
| as described [here](/configuration). | ||||
| 
 | ||||
| ## Docker | ||||
| 
 | ||||
| Docker is the recommended way to install vieter. The images can be pulled from | ||||
| [`chewingbever/vieter`](https://hub.docker.com/r/chewingbever/vieter). You can | ||||
| either pull a release tag (e.g. `chewingbever/vieter:0.1.0-rc1`), or pull the | ||||
| `chewingbever/vieter:dev` tag. The latter is updated every time a new commit is | ||||
| pushed to the development branch. This branch will be the most up to date, but | ||||
| does not give any guarantees about stability, so beware! | ||||
| Docker images are published to the | ||||
| [`chewingbever/vieter`](https://hub.docker.com/r/chewingbever/vieter) Docker | ||||
| Hub repository. You can either pull a release tag (e.g. | ||||
| `chewingbever/vieter:0.1.0-rc1`), or pull the `chewingbever/vieter:dev` tag. | ||||
| The latter is updated every time a new commit is pushed to the development | ||||
| branch. This branch will be the most up to date, but does not give any | ||||
| guarantees about stability, so beware! | ||||
| 
 | ||||
| The simplest way to run the Docker image is using a plain Docker command: | ||||
| Due to the single-binary design of Vieter, this image can be used both for the | ||||
| repository server & the cron daemon. | ||||
| 
 | ||||
| ```sh | ||||
| docker run \ | ||||
|     --rm \ | ||||
|     -d \ | ||||
|     -v /path/to/data:/data \ | ||||
|     -e VIETER_API_KEY=changeme \ | ||||
|     -e VIETER_DEFAULT_ARCH=x86_64 \ | ||||
|     -p 8000:8000 \ | ||||
|     chewingbever/vieter:dev | ||||
| Below is an example compose file to set up both the repository server & the | ||||
| cron daemon: | ||||
| 
 | ||||
| ```yaml | ||||
| version: '3' | ||||
| 
 | ||||
| services: | ||||
|   server: | ||||
|     image: 'chewingbever/vieter:dev' | ||||
|     restart: 'always' | ||||
| 
 | ||||
|     environment: | ||||
|       - 'VIETER_API_KEY=secret' | ||||
|       - 'VIETER_DEFAULT_ARCH=x86_64' | ||||
|     volumes: | ||||
|       - 'data:/data' | ||||
| 
 | ||||
|   cron: | ||||
|     image: 'chewingbever/vieter:dev' | ||||
|     restart: 'always' | ||||
|     user: root | ||||
|     command: 'vieter cron' | ||||
| 
 | ||||
|     environment: | ||||
|       - 'VIETER_API_KEY=secret' | ||||
|       # MUST be public URL of Vieter repository | ||||
|       - 'VIETER_ADDRESS=https://example.com' | ||||
|       - 'VIETER_DEFAULT_ARCH=x86_64' | ||||
|       - 'VIETER_MAX_CONCURRENT_BUILDS=2' | ||||
|       - 'VIETER_GLOBAL_SCHEDULE=0 3' | ||||
| 
 | ||||
| volumes: | ||||
|   data: | ||||
| ``` | ||||
| 
 | ||||
| Here, you should change `/path/to/data` to the path on your host where you want | ||||
| vieter to store its files. | ||||
| 
 | ||||
| The default configuration will store everything inside the `/data` directory. | ||||
| 
 | ||||
| Inside the container, the Vieter server runs on port 8000. This port should be | ||||
| exposed to the public accordingely. | ||||
| 
 | ||||
| For an overview of how to configure vieter & which environment variables can be | ||||
| used, see the [Configuration](/configuration) page. | ||||
| 
 | ||||
| ## Binary | ||||
| 
 | ||||
| On the [releases](https://git.rustybever.be/Chewing_Bever/vieter/releases) | ||||
| page, you can find statically compiled binaries for all released versions. You | ||||
| can download the binary for your host's architecture & run it that way. | ||||
| On the | ||||
| [releases](https://git.rustybever.be/vieter/vieter/releases) | ||||
| page, you can find statically compiled binaries for all | ||||
| released versions. This is the same binary as used inside | ||||
| the Docker images. | ||||
| 
 | ||||
| For more information about configuring the binary, check out the | ||||
| [Configuration](/configuration) page. | ||||
| ## Arch | ||||
| 
 | ||||
| I publish both development & release versions of Vieter to my personal | ||||
| repository, https://arch.r8r.be. Packages are available for `x86_64` & | ||||
| `aarch64`. To use the repository, add the following to your `pacman.conf`: | ||||
| 
 | ||||
| ``` | ||||
| [vieter] | ||||
| Server = https://arch.r8r.be/$repo/$arch | ||||
| SigLevel = Optional | ||||
| ``` | ||||
| 
 | ||||
| Afterwards, you can update your system & install the `vieter` package for the | ||||
| latest official release or `vieter-git` for the latest development release. | ||||
| 
 | ||||
| ## Building from source | ||||
| 
 | ||||
| Because the project is still in heavy development, it might be useful to build | ||||
| from source instead. Luckily, this process is very easy. You'll need make, | ||||
| libarchive & openssl; all of which should be present on an every-day Arch | ||||
| install. Then, after cloning the repository, you can use the following commands: | ||||
| 
 | ||||
| ```sh | ||||
| # Builds the compiler; should usually only be ran once. Vieter compiles using | ||||
| # the default compiler, but I maintain my own mirror to ensure nothing breaks | ||||
| # without me knowing. | ||||
| make v | ||||
| 
 | ||||
| # Build vieter | ||||
| # Alternatively, use `make prod` to build the production build. | ||||
| make | ||||
| ``` | ||||
| {{< hint info >}} | ||||
| **Note**   | ||||
| My version of the V compiler is also available on my Vieter instance, | ||||
| https://arch.r8r.be. It's in the `vieter` repository, with the package being | ||||
| named `vieter-v`. The compiler is available for both x86_64 & aarch64. | ||||
| {{< /hint >}} | ||||
| 
 | ||||
| ## My Vieter instance | ||||
| 
 | ||||
| Besides uploading development Docker images, my CI also publishes x86_64 & | ||||
| aarch64 packages to my personal Vieter instance, https://arch.r8r.be. If you'd | ||||
| like, you can use this repository as well by adding it to your Pacman | ||||
| configuration as described [here](/usage#configuring-pacman). Both the | ||||
| repository & the package are called `vieter`. | ||||
| The project [README](https://git.rustybever.be/vieter/vieter#building) contains | ||||
| instructions for building Vieter from source. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue