├── .github └── workflows │ └── gh-pages.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── archetypes └── default.md ├── config.toml.example ├── content ├── Contribution │ ├── Adding a Page │ │ └── _index.md │ ├── File Structure │ │ └── _index.md │ ├── Get Started │ │ └── _index.md │ ├── Modify a Page │ │ └── _index.md │ └── _index.md ├── Explanations │ └── _index.md ├── Getting Started │ ├── Difficulty Tiers │ │ └── _index.md │ ├── How To Self Host │ │ └── _index.md │ ├── Operating Systems │ │ └── _index.md │ ├── Reverse Proxies │ │ └── _index.md │ ├── Self-Hosted Alternatives │ │ └── _index.md │ ├── What Is Self-Hosting │ │ └── _index.md │ └── _index.md ├── Guides │ ├── DevOps Toolchains │ │ ├── Gitlab Kubernetes │ │ │ └── _index.md │ │ └── _index.md │ ├── Get a free domain name and certificate │ │ └── _index.md │ ├── Reverse Proxy Servers │ │ ├── Nginx │ │ │ └── _index.md │ │ └── _index.md │ ├── Virtual Private Networks │ │ ├── Wireguard │ │ │ └── _index.md │ │ └── _index.md │ ├── Webservers │ │ └── _index.md │ └── _index.md ├── _index.md └── tags │ ├── easy │ └── _index.md │ ├── hard │ └── _index.md │ └── normal │ └── _index.md ├── layouts └── partials │ ├── favicon.html │ └── logo.html └── static └── images ├── favicon.png └── logo.png /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | permissions: 8 | contents: read 9 | pages: write 10 | id-token: write 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout project 17 | uses: actions/checkout@v3 18 | - name: Checkout submodules 19 | run: | 20 | git submodule init 21 | git submodule update 22 | - name: Install build dependencies 23 | run: | 24 | sudo apt update 25 | sudo apt install hugo 26 | - name: Configure hugo 27 | run: | 28 | patch -o config.toml config.toml.example << EOF 29 | 1c1 30 | < baseURL = "http://localhost/" 31 | --- 32 | > baseURL = "https://r-selfhosted-wiki.github.io/wiki" 33 | EOF 34 | - name: Build page 35 | run: hugo 36 | - name: Upload atrifacts 37 | uses: actions/upload-artifact@v3 38 | with: 39 | path: public 40 | 41 | prepare_page: 42 | runs-on: ubuntu-latest 43 | needs: 44 | - build 45 | steps: 46 | - name: Retrieve build 47 | uses: actions/download-artifact@v3 48 | - name: Upload Pages Artifact 49 | uses: actions/upload-pages-artifact@v1.0.8 50 | with: 51 | path: artifact 52 | 53 | deploy: 54 | environment: 55 | name: github-pages 56 | url: ${{ steps.deployment.outputs.page_url }} 57 | runs-on: ubuntu-latest 58 | needs: prepare_page 59 | steps: 60 | - name: Deploy to GitHub Pages 61 | id: deployment 62 | uses: actions/deploy-pages@v2 63 | with: 64 | preview: true 65 | 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | config.toml 2 | .hugo_build.lock 3 | ./public/ -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "themes/hugo-theme-learn"] 2 | path = themes/hugo-theme-learn 3 | url = https://github.com/matcornic/hugo-theme-learn.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # /r/Selfhosted Official Wiki 2 | 3 | This is the home of the full site source for the Hugo project that hosts the /r/selfhosted official wiki. 4 | 5 | ## Contributing 6 | 7 | You'll need to submit a pull request in order to submit content. If you just want to edit a typo or add a small correction to an existing document, feel free to edit it directly using the Github web-based edit function. Otherwise, refer to the local machine setup instructions below. 8 | 9 | ## Community 10 | 11 | Check out [/r/selfhosted](https://reddit.com/r/selfhosted) for the full details of what we represent and do. 12 | 13 | ## Local Machine Setup 14 | 15 | ### Installing Hugo 16 | 17 | Since we are using Hugo, getting your local site up and running is fairly simple. 18 | 19 | #### OS Independent 20 | 21 | Since Hugo is cross-platform, and OS choice is far from uniform in this community, I won't go into how to get Hugo functioning on your OS of choice. Follow the [Getting Started](https://gohugo.io/getting-started/quick-start/). It's not difficult. 22 | 23 | Once you can successfully get a version number from the command `hugo version`, you're ready to continue here. 24 | 25 | #### Fork and Clone Operations 26 | 27 | First thing you'll want to do is Fork the [Github Repository](https://github.com/r-selfhosted-wiki/wiki) for the /r/selfhosted wiki. You'll be working within a repo that syncs with your own accounts' fork of the repository. 28 | 29 | Since we use a theme that has its own [Github Repository](https://github.com/matcornic/hugo-theme-learn), there is an extra flag we must add to our `git clone` command. 30 | 31 | 1. First, clone the forked repo into your local machine. the "recurse-submodules" flag should allow you to automatically pull in the git repo for the theme, as well. 32 | 33 | `git clone --recurse-submodules https://github.com/{YOUR_USER_NAME}/wiki.git` -- Be sure to modify this url to match your actual username and git repository name. 34 | 35 | 2. Move to the directory that was just cloned and make sure the `themes/hugo-theme-learn/` folder has content. 36 | 37 | `cd wiki && ls themes/hugo-theme-learn` 38 | 39 | 3. Once confirmed, copy the example `config.toml` file. Unless you're doing some abstract hosting environment for your local developement machine, this should work as-is. 40 | 41 | `cp config.toml.example config.toml` 42 | 43 | 4. Run the server locally with the Hugo's server command 44 | 45 | `hugo serve` 46 | 47 | You should see some output about the success/launch of the local server, similar to below: 48 | 49 | ``` 50 | $ hugo serve 51 | Start building sites … 52 | 53 | | EN 54 | -------------------+----- 55 | Pages | 22 56 | Paginator pages | 0 57 | Non-page files | 0 58 | Static files | 75 59 | Processed images | 0 60 | Aliases | 0 61 | Sitemaps | 1 62 | Cleaned | 0 63 | 64 | Built in 84 ms 65 | Watching for changes in /home/kmisterk/wiki/{archetypes,content,data,layouts,static,themes} 66 | Watching for config changes in /home/kmisterk/wiki/config.toml 67 | Environment: "development" 68 | Serving pages from memory 69 | Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender 70 | Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) 71 | Press Ctrl+C to stop 72 | ``` 73 | 74 | Navigate your browser to `http://localhost:1313` and you should see the site live on your local machine. 75 | 76 | You're now ready to start adding and/or editing content. 77 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /config.toml.example: -------------------------------------------------------------------------------- 1 | baseURL = "http://localhost/" 2 | languageCode = "en-US" 3 | title = "/r/SelfHosted Official Wiki" 4 | theme = "hugo-theme-learn" 5 | 6 | [params] 7 | themeVariant = "green" 8 | description = "The official wiki for the reddit /r/selfhosted community" 9 | titleSeparator = "| |" 10 | 11 | [outputs] 12 | home = [ "HTML", "RSS", "JSON"] 13 | 14 | [taxonomies] 15 | tag = "tags" 16 | category = "categories" 17 | -------------------------------------------------------------------------------- /content/Contribution/Adding a Page/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Adding a Page 3 | --- 4 | 5 | 6 | Adding pages with Hugo is easy! Each page has its own folder with an _index.md file. Make a new folder with an _index.md file inside. 7 | 8 | The _index.md file looks like this 9 | 10 | --- 11 | Title: TITLE HERE 12 | Other metafields: metafield content 13 | --- 14 | 15 | Content! 16 | 17 | See? It's easy! 18 | 19 | Page content uses Markdown syntax for text styles, formatting, hyperlinks, and all kinds of stuff. 20 | 21 | You can find more documentation about Markdown support in Hugo here: https://www.markdownguide.org/tools/hugo/ 22 | 23 | If you want more information on how to use Markdown syntax in content, please visit: https://daringfireball.net/projects/markdown/basics 24 | -------------------------------------------------------------------------------- /content/Contribution/File Structure/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: File Structure 3 | --- 4 | 5 | Hugo's file structure is simple. For example, here is the part of the file structure of this very wiki. 6 | 7 | / content 8 | _index.md 9 | 10 | / Contribution 11 | _index.md 12 | 13 | / Getting Started 14 | _index.md 15 | 16 | / Adding a Page 17 | _index.md 18 | 19 | / Guides 20 | _index.md 21 | 22 | / Webservers 23 | _index.md 24 | -------------------------------------------------------------------------------- /content/Contribution/Get Started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Getting Started 3 | weight: 1 4 | --- 5 | 6 | This guide will show you how to setup a local environment for you to edit, create, or update content! 7 | 8 | Please note, if you wish to make a simple edit, you can always submit a quick pull request by utilizing the edit button on the file in question directly on the GitHub repo online. 9 | 10 | ## Installing Hugo 11 | 12 | Since we are using Hugo, getting your local site up and running is fairly simple. 13 | 14 | ### OS independent 15 | 16 | Since Hugo is cross-platform, and OS choice is far from uniform in this community, I won't go into how to get Hugo functioning on your OS of choice. Follow the [Getting Started](https://gohugo.io/getting-started/quick-start/). It's not difficult. 17 | 18 | Once you can successfully get a version number from the command `hugo version`, you're ready to continue here. 19 | 20 | ### Fork and clone operations 21 | 22 | First thing you'll want to do is to Fork the [GitHub Repository](https://github.com/r-selfhosted-wiki/wiki) for the /r/selfhosted wiki. You'll work within a repo that syncs with your own accounts' fork of the repository. 23 | 24 | Since we use a theme that has its own [GitHub Repository](https://github.com/matcornic/hugo-theme-learn), there is an extra flag we must add to our `git clone` command. 25 | 26 | 1. First, clone the forked repo into your local machine. The "recurse-submodules" flag should allow you to automatically pull in the git repo for the theme, as well. 27 | 28 | `git clone --recurse-submodules https://github.com/{YOUR_USER_NAME}/wiki.git` -- Be sure to modify this url to match your actual username and git repository name. 29 | 30 | 2. Move to the directory that has just been cloned and make sure the `themes/hugo-theme-learn/` folder has content. 31 | 32 | `cd wiki && ls themes/hugo-theme-learn` 33 | 34 | 3. Once confirmed, copy the example `config.toml` file. Unless you're doing some abstract hosting environment for your local development machine, this should work as-is. 35 | 36 | `cp config.toml.example config.toml` 37 | 38 | 4. Run the server locally with the Hugo's server command 39 | 40 | `hugo serve` 41 | 42 | You should see some output about the success/launch of the local server, similar to below: 43 | 44 | ``` 45 | $ hugo serve 46 | Start building sites … 47 | 48 | | EN 49 | -------------------+----- 50 | Pages | 22 51 | Paginator pages | 0 52 | Non-page files | 0 53 | Static files | 75 54 | Processed images | 0 55 | Aliases | 0 56 | Sitemaps | 1 57 | Cleaned | 0 58 | 59 | Built in 84 ms 60 | Watching for changes in /home/kmisterk/wiki/{archetypes,content,data,layouts,static,themes} 61 | Watching for config changes in /home/kmisterk/wiki/config.toml 62 | Environment: "development" 63 | Serving pages from memory 64 | Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender 65 | Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) 66 | Press Ctrl+C to stop 67 | ``` 68 | 69 | 70 | Navigate your browser to `http://localhost:1313` and you should see the site live on your local machine. 71 | 72 | You're now ready to start adding and/or editing content. 73 | -------------------------------------------------------------------------------- /content/Contribution/Modify a Page/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Modify a Page 3 | --- 4 | 5 | Modifying a page is as simple as changing the _index.md file inside a folder. 6 | 7 | \ content 8 | _index.md <-- this here 9 | 10 | \ Subfolder 11 | _index.md <-- or this one 12 | 13 | \ Subfolder2 14 | _index.md <-- or even this one too 15 | 16 | Hugo uses Markdown to format and style text, among other things. 17 | 18 | You can find more information on how to use Markdown Syntax here: https://daringfireball.net/projects/markdown/basics 19 | -------------------------------------------------------------------------------- /content/Contribution/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Contribution Guidelines 3 | --- 4 | 5 | This guide aims to showcase how to contribute to this wiki, including best practices, pull requests, adding and editing articles and content, and file structure. 6 | -------------------------------------------------------------------------------- /content/Explanations/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Explanations 3 | --- 4 | 5 | ## Find explanations and definitions for common terms and concepts related to self-hosting 6 | 7 | ### Topics 8 | 9 | Explanations: 10 | 11 | - [Servers]({{}} "Servers") 12 | - [Daemons]({{}} "Daemons") 13 | - [Webservers]({{}} "Webservers") 14 | - [Domain names]({{}} "Domain names") 15 | - [DNS]({{}} "DNS") 16 | - [Reverse proxies]({{}} "Reverse proxies") 17 | - [Port forwarding]({{}} "Port forwarding") 18 | - [Containers]({{}} "Containers") 19 | - [Virtualization]({{}} "Virtualization") 20 | - [Virtual private networks]({{}} "Virtual private networks") 21 | - [Operating systems]({{}} "Operating systems") 22 | 23 | 24 | #### Servers 25 | 26 | Servers are machines whose purpose is to provide a service or content over a network. They are typically administered remotely and only connect physically to power and a network. They "serve" content or services using software daemons. 27 | 28 | Bare metal servers are not virtualized. Any service or content they offer is configured on the host system. They are not new *per-se*, but with the introduction of containerization and virtualization, the phrase has been coined to differentiate the old-school server tradition from newer techniques. 29 | 30 | Their natural habitat is the datacenter, where they live in racks to survive off electricity and network data. While they are not able to reproduce, they have no natural predators, so their population is stable. Some breeds of server can be found in network/data closets where they live in a business. Fewer are still kept in captivity in private homes. 31 | 32 | Virtual servers are servers that are run under an emulator or hypervisor to provide a server-like environment using a software envelope which may be augmented with hardware support. 33 | 34 | **[Top]({{}} "To the top")** 35 | 36 | ##### Daemons 37 | 38 | Daemons are software packages that run perpetually to provide content or a service. They differentiate servers from clients. 39 | 40 | Examples of daemons are webservers, email servers, file servers, authentication services (AD, LDAP), database servers, and many more. 41 | 42 | **[Top]({{}} "To the top")** 43 | 44 | #### Webservers 45 | 46 | Webservers are daemons that accept HTTP requests and serve set content based on the requested host (IP address or domain name). 47 | 48 | The content can be static HTML/XML or it can be dynamic (JavaScript, PHP, FCGI, WSGI). 49 | 50 | Webservers commonly offer reverse proxy functionality, it is common to use webservers for this purpose instead. 51 | 52 | Common webservers are: Apache, Cherokee, LiteSpeed, Lighttpd, nginx, and IIS. Apache and nginx are the top webservers by market share respectively, with IIS coming in third. 53 | 54 | **[Top]({{}} "To the top")** 55 | 56 | #### Domain names 57 | 58 | Domain names are a word, phrase, or string that is used for navigating the Internet. They are registered to individuals or legal entities in lengths of years for a set fee. 59 | 60 | They are divided into levels, where each level is separated by a period (dot). Domain registrations include the top-level and second-level portion of a domain. All levels below are controlled by DNS at the discretion of the domain registrant. 61 | 62 | Top-level domains (TLDs) are .com, .net, .info, .edu, .org, etc. 63 | 64 | The customizable part of the domain name you can register is called the second-level domain. 65 | 66 | Third-level domains are referred to as *subdomains*. 67 | 68 | Structure: subdomain.*secondleveldomain*.**tld** 69 | 70 | E.g.: wiki.*r-selfhosted*.**com** 71 | 72 | ##### Domain registration 73 | 74 | Registering a domain name is done with a *Domain Registrar*. Prices are based on the top-level domain, but all registrations are for a period of one year minimum. 75 | 76 | Registrars come in two flavors: 77 | 78 | - Accredited: These registrars work directly with ICANN or other regional Internet registries for domain registrations. 79 | - Domain Resellers: These companies work with a "white label" registrar to resell domain registrations for a small markup. 80 | 81 | Accreditation requires quite a bit of infrastructure and vetting to make sure you can handle all aspects of registering and maintaining domains on behalf of the registrant. 82 | 83 | Resellers are popular because of low overhead and easy implementation. Many "white label" registrars have turnkey solutions for resellers to appear as independent registrars while actually reselling domain names. 84 | 85 | ##### Which is right for you? 86 | 87 | Choosing a domain registrar is easy. Picking a domain registrar that is trustworthy and reputable is less so. 88 | 89 | Many domain registrars also offer to handle the DNS records for the domains registered with them. Many registrars have domain registration as a part of their business. Registration is usually bundled with webhosting or other related services. You may even get a domain registration for free if you agree to a year-long hosting contract with a webhost. 90 | 91 | While bundling related services together under one roof may sound convenient, it is generally not a good idea. It is recommended to have your domain registration with a registrar, DNS records with another company, and hosting with yet another entity. Common reasoning for this piece of advice is that if your service provider has a serious outage or other technical problem, it can only affect one aspect of your online presence. If you have all services under one provider, a technical issue could prevent your DNS from resolving and your website/service from being served. 92 | 93 | You can find the list of ICANN-accredited domain registrars here: https://www.icann.org/registrar-reports/accreditation-qualified-list.html 94 | 95 | As far as finding a reputable, trustworthy service provider, we must insist on your own research. One of the most popular forums for discussing hosting and related services is **[Web Hosting Talk](https://www.webhostingtalk.com/)**. If a relevant service provider has a bad reputation in the industry, you can surely find out about it here. 96 | 97 | **[Top]({{}} "To the top")** 98 | 99 | ##### Domain Name System 100 | 101 | The Domain Name System (DNS) is the method of defining what unique machines serve content for your domain. 102 | 103 | The important parts of DNS you have to worry about are *nameservers* and *DNS records*. 104 | 105 | ##### Nameservers 106 | 107 | Nameservers are a way to declare which servers are responsible for answering record requests for your domain. Most registrars provide DNS services, but if you have your DNS provided elsewhere, you will want to provide your primary and secondary nameservers to your registrar. The nameservers to use will be provided by your DNS service provider. 108 | 109 | E.g.: ns1.dnsnameserver.net, ns2.dnsnameserver.net 110 | 111 | ##### DNS records 112 | 113 | DNS records are part of your domain name configuration called a DNS *zone*. 114 | 115 | **SOA**: Start of Authority Records is generally handled by your DNS service provider automatically. They define: 116 | - **MNAME**: Master nameserver for the zone. 117 | - **RNAME**: Email for the domain administrator. Does not support "@", use periods. Periods before the domain name are escaped. E.g.: some.one@example.com => "some\\.one.example.com". 118 | - **SERIAL**: The DNS zone **serial**, used to indicate when a zone has changed. 119 | - **REFRESH**: Time to wait for secondary nameservers to query the master. 120 | - **RETRY**: Timeout for refreshing. 121 | - **EXPIRE** Threshold time for secondary nameservers to stop attempting to reach an unresponsive master server. 122 | - **TTL**: The time to live to use for NXDOMAIN responses. 123 | 124 | **Example SOA**: 125 | 126 | ``` 127 | $TTL 86400 128 | @ IN SOA ns1.nameserver.com. postmaster.sumdomain.com. ( 129 | 2020080302 ;Serial 130 | 7200 ;Refresh 131 | 3600 ;Retry 132 | 1209600 ;Expire 133 | 3600 ;Negative response caching TTL 134 | ) 135 | ``` 136 | 137 | The fields of a DNS zone record are: 138 | 139 | - Domain: Either the domain name or subdomain to create a record for. 140 | - Time to live: The time in seconds for a record to be cached before a new copy is requested. 141 | - Class: Indicative of the namespace. Usually IN (Internet namespace). 142 | - Type: The type of record to define. 143 | - Content: The content of the record. What is acceptable in this field is dependent on the type of record. 144 | 145 | There are many types of DNS records, let's go over some common ones. This list is **not** exhaustive. 146 | 147 | - A: A records tie the domain or subdomain to an IPv4 address. 148 | - AAAA: AAAA records tie the domain or subdomain to an IPv6 address. 149 | - CNAME: CNAME records tie the domain or subdomain to another domain or subdomain. 150 | - MX: MX records are used to define how mail is handled for your domain. The content of an MX record is the priority and answering server domain name. Lower preference number indicates higher priority. 151 | - TXT: Text records associate text data with your domain. They are used for a variety of reasons, notable for SPF or DKIM. 152 | 153 | | Domain | Time To Live | Class | Type | Content | 154 | |--------|--------------|----|------|---------| 155 | | example.com. | 86400 | IN | A | 192.168.1.240 | 156 | | ipv6.example.com. | 86400 | IN | AAAA | feef:00bb:2005:1eef:fbca:544d | 157 | | www.example.com. | 86400 | IN | CNAME | example.com. | 158 | | example.com. | 86400 | IN | MX | 10 mail.mailserver.com | 159 | | example.com. | 86400 | IN | TXT | "Reserved for a purpose I am not legally required to disclose." | 160 | 161 | **[Top]({{}} "To the top")** 162 | 163 | #### Reverse proxies 164 | 165 | Reverse proxies are daemons that accept connections and then connect to another service based on port or host to facilitate the request. They act as a middleman instead of a traffic redirector. 166 | 167 | Typical use cases for reverse proxies are to provide a unified frontend for multiple backends or hosts. Another common use is for high-availability to provide failover or distribute load between multiple backends serving the same content. 168 | 169 | Examples of popular software capable of performing as a reverse proxy are: Squid, HAProxy, Apache, nginx, and Caddy. 170 | 171 | **[Top]({{}} "To the top")** 172 | 173 | #### Port forwarding 174 | 175 | Port forwarding is the function of inspecting traffic on an incoming port and redirecting it to another port or host with minimal modification. Primary purposes of this are to forward traffic to a service behind a firewall/router. 176 | 177 | Common for hosting game servers from home when running dedicated servers before developers moved to match-making. Another use for this is to open ports for BitTorrent so that you can share your vast and innumerable collection of Linux ISOs. 178 | 179 | The difference between port forwarding and a reverse proxy is that the reverse proxy will accept, process, and establish a new connection to the backend service to fulfil the request. 180 | 181 | Port forwarding inspects and alters packet headers before it is routed to its new destination. The connection is otherwise untouched. 182 | 183 | Port forwarding is a function of your firewall. Commonly at the router or other network gateway. 184 | 185 | Linux has one firewall called **iptables** with many frontends or management packages available for it. BSD-based firewalls are **pf**, **ipfw**, and **IPFilter**. The Windows firewall consists of a scarecrow holding a sign saying: "plz no tresspass". 186 | 187 | **[Top]({{}} "To the top")** 188 | 189 | #### Containers 190 | 191 | Containers are software envelopes to isolate a piece or bundle of software and their dependencies. Containers come in many forms. 192 | 193 | A container could contain a PHP-based forum with an AMP stack (Apache, Maria DB, PHP) as dependencies. 194 | 195 | This is useful if you want an easy way to deploy software without configuring dependent software/libraries manually. 196 | 197 | Containers can also resolve software conflicts when running multiple services which depend on different versions of the same software/libraries. 198 | 199 | Popular containers are Linux Containers (LXC), jails (BSD UNIX), Kubernetes, and Docker. 200 | 201 | **[Top]({{}} "To the top")** 202 | 203 | #### Virtualization 204 | 205 | Virtualization is a lower level form of containerization. There are many forms of virtualization that provide different sets of features/tradeoffs. 206 | 207 | In practice, it often virtualizes whole or major parts of an operating system. 208 | 209 | ##### Full virtualization 210 | 211 | Full virtualization is generally the containerization of a full, unmodified operating system with virtualized hardware. The virtualized OS is not host-aware. 212 | 213 | Fully virtualized guests require more overhead than paravirtualized guests. This can be mitigated with hardware support (Intel VT, AMD SVM) for virtualization instructions. 214 | 215 | Examples of this are Hyper-V, Xen, KVM/Qemu, VMware ESXi. 216 | 217 | ##### Paravirtualization 218 | 219 | Paravirtualization is the practice of running a modified kernel/OS where privileged instructions are sent through an API shared with the host. It does not require the virtualization of hardware, but it does require an operating system that is modified to be used with the specific API used by your chosen virtualization method. This can be in the form of source code modifications or specialized device drivers. 220 | 221 | Microsoft Windows cannot be paravirtualized. 222 | 223 | Examples: Xen, Oracle VM, OpenVZ. 224 | 225 | **[Top]({{}} "To the top")** 226 | 227 | #### Virtual private networks 228 | 229 | Virtual private networks (VPNs) are a way of networking individual machines together in software regardless of their physical or network proximity. 230 | 231 | A typical use case is for networking corporate locations together to share network resources such as file shares, intranet webservers, on-premises services, etc. 232 | 233 | Another use for a VPN is to tunnel traffic destined for a public service through to another endpoint, usually to bypass geo-location restrictions or state-imposed censorship of the Internet. 234 | 235 | Some use VPNs to keep services behind a restrictive ISP or firewall accessible outside of said network. 236 | 237 | **[Top]({{}} "To the top")** 238 | 239 | #### Operating systems 240 | 241 | An operating system is the software that is responsible for running and managing your physical machine. It provides the kernel, hardware drivers, low-level software packages, libraries, and userland applications for the end-user to provide basic functions. 242 | 243 | End-user operating system for desktop computers or laptops is typically Windows. 244 | 245 | Corporate IT infrastructure to serve employees is generally Microsoft-based additionally using AD for authentication, on-premises exchange, IIS webservers, MS SQL databases, and other service needs. 246 | 247 | The operating system used to serve content and services to end-customers is typically Linux or UNIX-based. Examples are webhosts for serving websites, Netflix for serving movie and TV streams, DNS services for domain records, and most if not all other infrastructure needed to keep the Internet operational. 248 | 249 | Android is a Linux-based operating system used in the majority of the smartphone market. And iOS is a UNIX-based mobile OS used by Apple for iPhones. 250 | 251 | Embedded Linux and BSD are also used in devices like set-top boxes, smart TVs, routers, smart switches, medical equipment, flight telemetry controllers for aerospace, navigation equipment, industrial automation, etc. 252 | 253 | **[Top]({{}} "To the top")** 254 | -------------------------------------------------------------------------------- /content/Getting Started/Difficulty Tiers/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Difficulty Tiers 3 | tags: [easy, normal, hard] 4 | --- 5 | 6 | ### How hard *is* stuff? 7 | 8 | Stuff can be hard. Stuff can also be easy. Some things here are hard. Some things are easy. Let's define some difficulty tiers. 9 | 10 | ### Easy / Basic 11 | 12 | No worries here, folks! Everything should be done with a GUI with *maybe* some stuff needing a command or two, or maybe just editing some text files. Instructions should come in picture form. 13 | 14 | Operating systems in this tier are Ubuntu Linux, Windows, or OS X. 15 | 16 | ### Normal / Intermediate 17 | 18 | Still not hard, but you're expected to know how not to break things in a terminal or text-based interface. GUI is optional, but used on occasion. 19 | 20 | Operating systems in this tier are Debian Linux, Red Hat Enterprise Linux, Rocky Linux. 21 | 22 | ### Hard / Advanced 23 | 24 | You are at home with a terminal and all things can be accomplished with it. You know how not to break a system with a terminal, but also how to fix serious system-level issues. 25 | 26 | Operating systems in this tier are Arch, *BSD, Slackware Linux, Gentoo Linux. 27 | 28 | ### Guru / Expert 29 | 30 | You compile your software from source and surf the web with Lynx. If you don't know what that means you are a *poser*. 31 | 32 | You run [Suicide Linux](https://qntm.org/suicide) because anything less is for little babies. 33 | -------------------------------------------------------------------------------- /content/Getting Started/How To Self Host/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: How to Self-Host 3 | --- 4 | 5 | Here we will go over the basics of what self-hosting entails. There will be a lack of detail in each individual step as those details are reserved for their own documentation in a separate article or are specific to a provider/service as not everything can be self-hosted, especially if you wish to make a service publicly available. 6 | 7 | ### Contents 8 | 9 | - [Choosing a server]({{}} "Choosing a Server") 10 | - [Domain name registration]({{}} "Registering a Domain Name") 11 | - [DNS configuration]({{}} "Domain Name Records") 12 | - [Network configuration]({{}} "Network Configuration") 13 | - [Server setup]({{}} "Server Configuration") 14 | 15 | #### Choosing a server 16 | 17 | A server can be just about anything. An old computer that you don't use anymore, a cheap small form factor machine from an online store, a custom built machine using server grade or consumer parts, or even a Raspberry Pi which can be gotten for under $100. 18 | 19 | An operating system to install to make it a server is another choice you have to make. Windows Server is usually not chosen due to licensing costs, but it is an option. Linux comes in many flavors to meet many needs. It is freely available and free to modify. 20 | 21 | **[To the top]({{}} "Top")** 22 | 23 | #### Registering a domain name 24 | 25 | Registering a [domain name]({{}} "domain name") is usually the first step when you are looking to have something self-hosted that is reachable via the Internet. Although you can even find a free domain name, it is always a good idea to find a domain registrar you can trust; recommending specific providers is outside the scope of this wiki. 26 | 27 | Top-level domain names vary in price. Dot.com domain names are usually ~$15/yr, while others like dot.net or dot.info are typically less. Some can be more expensive, and the registrar will have their price listings based on the top-level domain. Domain registration is a competitive business, with lots of resellers working for white-label registrars. You can look at several registrars to compare prices for the domain you want to register. In some cases you may choose a free domain name, e.g. under .TK, .ML, .GA, .CF, or .GQ, but be ready that most search engines would range your site much worse, so such solution is not recommended for serious projects. 28 | 29 | Domain registrations are on a first-come, first-serve basis. If the domain name you want is already taken, you will have to wait until it expires, or buy it from the current owner. Otherwise, you can come up with a different domain name to register. 30 | 31 | **BEWARE**: Some domain registrars will take domain names that you search for, but not purchase, and "hold" their registration. 32 | 33 | E.g.: You go to someregistrar.com and search for ilikeponies.com to see if it's available for registration. You find that it is available, but want to check out someotherregistrar.com to see their prices for the same domain. When you check there, the domain ilikeponies.com is taken. But when you search for it again on someregistrar.com, it's still available. 34 | 35 | What is happening is that someregistrar.com has "held" the registration for a period of time to prevent you from registering it elsewhere in hopes that you take your business with them. 36 | 37 | While we are not certain of the legality of such practice, it is considered uncouth and frowned upon in the industry. You can resolve this by contacting the registrar, telling them they are massive jerks, and have them release the hold. 38 | 39 | If they have no shame, you may have to explain that your poor experience with them can wind up on webhostingtalk.com for the world to see. 40 | 41 | **[To the top]({{}} "Top")** 42 | 43 | #### Domain name records 44 | 45 | Once you have registered a domain name, you will need to configure the nameservers and then add [DNS records]({{}} "DNS records") for the domain that points to the IP address of your server. 46 | 47 | Your domain registrar makes use of the nameserver records, and your DNS provider will take care of the other types of records. 48 | 49 | The basic DNS records to add are an A record for yourdomainname.com, and a CNAME for www.yourdomainname.com. 50 | 51 | Get the IP address of the machine you will use. If you serve locally, then the local IP address of the machine will not work (e.g.: 192.168.1.X). You will have to use your public IP and use a reverse proxy + VPN or port forward. You can find your public IP address on your router status page or by going to https://ifconfig.me/. 52 | 53 | Use that IP as the content for your DNS A record. 54 | 55 | See your router documentation for directions on setting up port forwarding to the machine's local IP address. 56 | 57 | **[To the top]({{}} "Top")** 58 | 59 | #### Network configuration 60 | 61 | Your ISP is likely to block common ports used for Internet traffic such as 80 (HTTP), 443 (HTTPS), 21 (FTP), 25 (email SMTP), and many others. 62 | 63 | Some ISPs will have no problem unblocking some of these ports, but don't expect them to cooperate. 64 | 65 | Regardless, there are options to get around these issues if your ISP is non-cooperative. There may be clauses in your service agreement stating that hosting services from your home Internet connection is prohibited. While ISPs rarely take action against customers if they are found in violation of this rule, there are legitimate reasons for having such clause. 66 | 67 | Generally if you bypass their restrictions to self-host anyway, they don't care unless you cause problems for them. 68 | 69 | If you have a business Internet plan, these issues don't exist. You may still have to request a static IP, but your ISP should not be blocking ports by default as it is assumed you will be handling that yourself. If they are, they should cooperate with any unblocking requests. 70 | 71 | The typical way to bypass these restrictions is either to port forward (if your ISP doesn't block the ports) or using a reverse proxy in conjunction with a VPN using an Internet-reachable machine. 72 | 73 | You also have to contend with dynamic IP addresses. Your home connection is assigned to a public IP address, but it is not fixed, and can change if your DHCP lease on their network expires. Some ISPs may offer to provide you a static IP address for a monthly fee. 74 | 75 | For dynamic IP addresses, your DNS provider may support dynamic DNS updates. This can either require a dedicated client, or to simply call a URL with an embedded token with a program like Wget or cURL. It is an effective way to have a DNS record automatically updated on a regular basis to counteract a changing IP address. 76 | 77 | **[To the top]({{}} "Top")** 78 | 79 | #### Server configuration 80 | 81 | You need a server to handle requests for your domain name. This can be a shared hosting account with a web hosting provider, a dedicated server, a virtual private server, or your own server running locally. 82 | 83 | Despite the fact that you might find providers that could serve you some limited server storage and computing power remotely even for free, this is a self-hosting guide, so the assumption that the server is local has been made. 84 | 85 | Once you have chosen and installed the operating system you are going to use, you will need to setup your service daemon. For the sake of this article, we will assume that you'd like to serve a website using your domain name. 86 | 87 | There are a variety of web servers available, and the specific details on configuring that web server will be covered elsewhere. 88 | The basic steps are: 89 | 90 | - install the web server 91 | - configure it to answer for your domain name 92 | - give it a directory to serve from (/some/directory/domainname.com/html) 93 | - upload content into that folder 94 | 95 | Make sure the content folder has the permissions needed by your web server, and you should be good to go. 96 | 97 | This same process is generally the same for any service, but the documentation for said service should be consulted. 98 | 99 | **[To the top]({{}} "Top")** 100 | -------------------------------------------------------------------------------- /content/Getting Started/Operating Systems/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Operating Systems 3 | --- 4 | 5 | There are many operating systems available to meet different needs. Some are more difficult to administer than others, but there should be a solution available for whatever you want to do. 6 | 7 | While paying for a licensed product is always an option if you find the value in said product worth the cost, it is recommended to make sure that a "free" solution could not meet the same needs. 8 | 9 | #### Proprietary / Licensed 10 | 11 | - [Microsoft Windows Server](https://www.microsoft.com/en-us/windows-server/) | Windows is not usually chosen due to licensing costs. 12 | - [Unraid](https://unraid.net/) | Linux-based, but requires the purchase of a license for usage past the trial period. 13 | 14 | #### Entry Level / Easy 15 | 16 | These are operating systems that are administered with a GUI/web-based frontend to focus on ease of use. 17 | 18 | - [YunoHost](https://yunohost.org) | [Demo](https://yunohost.org/#/try) 19 | - [TrueNAS CORE](https://www.truenas.com/truenas-core/) | A FreeBSD-based NAS operating system with ZFS support. Published by [iXsystems](https://www.ixsystems.com/), [TrueNAS and FreeNAS were "Unified" in late 2021](https://www.ixsystems.com/history/). 20 | - [TrueNAS SCALE](https://www.truenas.com/truenas-scale/) | A Debian Linux NAS operating system. Published by iXsystems, and based around work done for TrueNAS CORE. 21 | - [OpenMediaVault](https://www.openmediavault.org/) 22 | - [DietPi](https://dietpi.com/) | Built for single-board computers like Raspberry Pi or Pine64 boards. 23 | - [Sandstorm](https://sandstorm.io/) | [Demo](https://alpha.sandstorm.io/apps) 24 | 25 | #### Intermediate / Headless 26 | 27 | If you are comfortable managing your server using terminal, then these options will work for you. They do a lot of hard work for you and should be simple to administer when needed. 28 | 29 | - [Ubuntu Server](https://ubuntu.com/server) | Debian-based server OS developed by Canonical Ltd. 30 | - [Rocky Linux](https://rockylinux.org/) | Fork/replacement for CentOS. 31 | - [openSUSE](https://www.opensuse.org/) 32 | - [Fedora Linux](https://getfedora.org/en/server/) 33 | - [Debian](https://www.debian.org/) | One of the two oldest Linux distributions that are still maintained. Stable, mature, and proven. 34 | 35 | #### Advanced 36 | 37 | - [Arch Linux](https://archlinux.org/) | A light, simple distribution that provides a small foundation to build on. Rich documentation and a large community-maintained third party software repository make it a solid choice for Linux veterans. Tailored for experienced users. 38 | - [Gentoo Linux](https://www.gentoo.org/) | A Linux distribution focused on building packages from source to best fit your system. Binary packages are available, but that's like, against the spirit duuude. 39 | - [Slackware Linux](http://www.slackware.com/) | The other of the two oldest Linux distributions that are still maintained today, it focuses on stability and sticking to its UNIX roots. 40 | - [FreeBSD](https://www.freebsd.org/) | Almost as old as Linux itself, it is derived from BSD UNIX as developed at the University of California in Berkley. Used by Netflix as the OS powering its digital media delivery nodes. 41 | - [Alpine Linux](https://alpinelinux.org/) | A tiny Linux distribution catering to power users who want to squeeze the most resources out of their systems. 42 | 43 | #### Niche / Other 44 | 45 | - [Proxmox VE](https://www.proxmox.com/en/proxmox-ve) | An operating system focused on the management of a virtualization environment utilizing KVM as a hypervisor. 46 | - [XCP-ng](https://xcp-ng.org/) | XenServer-based, offers a turnkey virtualization solution. 47 | -------------------------------------------------------------------------------- /content/Getting Started/Reverse Proxies/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Intro to Reverse Proxies 3 | --- 4 | 5 | ### **Reverse proxies and YOU** 6 | 7 | What can a reverse proxy do for *you*? 8 | 9 | Many services that are self-hosted have a web UI. If you have many of these services running, a reverse proxy can be a central daemon that handles requests for all of these various backends. 10 | 11 | Let's say that you have three different services running: 12 | 13 | - Node.js forum NodeBB that runs on port 8008 14 | - Navidrome music streaming server on port 3000 through a local machine using IP 192.168.1.125 15 | - ownCloud web UI on port 8800 on a local machine with an IP of 192.168.1.123 16 | 17 | You have a domain name that you want to use for these but don't want an ugly URL like http://mydomain.com:8008. To complicate things further, these services are all on different hosts. 18 | 19 | A reverse proxy can be configured to accept requests for this domain and redirect them to a different host or port. 20 | 21 | To make your URLs pretty, the reverse proxy can be configured to redirect requests on your domain based on a folder name to a different service on your local network. 22 | 23 | - http://mydomain.com/forum/ --> http://localhost:8008/ 24 | - http://mydomain.com/music/ --> http://192.168.1.125:3000/ 25 | - http://mydomain.com/cloud/ --> http://192.168.1.123:8800/ 26 | 27 | As you can see, it is much nicer to reach these services through a single domain and folder than to use their port and host individually. 28 | 29 | You can even couple this with a self-hosted VPN so that these requests can be proxied to different services on different networks in different locations. All you need to do is to make sure the proxy and the services are on the same VPN and to use the VPN IP addresses. 30 | 31 | You don't have to use folders either. You can use subdomains as well such as music.mydomain.com, cloud.mydomain.com, and forum.mydomain.com respectively. It's all up to you and how you want to structure your services. 32 | -------------------------------------------------------------------------------- /content/Getting Started/Self-Hosted Alternatives/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Self-Hosted Alternatives 3 | --- 4 | 5 | ### ALTERNATIVE STUFF HERE 6 | 7 | There will be some common choices in some common categories here for some self-hosted alternatives. A more comprehensive list of alternatives will be listed at the bottom of this page. 8 | 9 | **None of the software listed on this page is endorsed or supported by r/selfhosted.** 10 | 11 | #### Webservers 12 | 13 | Daemons that serve website content. 14 | 15 | - [Apache](https://httpd.apache.org/) | The most popular webserver since forever. Higher overhead than others, but most PHP applications assume it. 16 | - [nginx](https://www.nginx.com/) | Second most popular webserver today, created to run some of the biggest Russian websites. 17 | - [Lighttpd](https://www.lighttpd.net/) | A more niche webserver focusing on low overhead and high performance. 18 | - [Caddy](https://caddyserver.com/) | A fast, multi-platform web server with automatic HTTPS. 19 | 20 | #### Databases 21 | 22 | Daemons or services that store data in a structured format. 23 | 24 | - [PostgreSQL](https://www.postgresql.org/) | A popular database solution that emphasizes extensibility and standards compliance. 25 | - [Maria DB](https://mariadb.org/) | Based on MySQL, forked to maintain an open source alternative that is mostly compatible with MySQL-based applications. 26 | - [MongoDB](https://www.mongodb.com/) | A document-based NoSQL database that uses JSON-like formatting to store information. 27 | - [SQLite](https://www.sqlite.org/index.html) | Flat file database that doesn't require a running DB server. 28 | 29 | #### Content management systems 30 | 31 | Frontends for managing the content on your website. 32 | 33 | - [WordPress](https://wordpress.org/) | The most popular CMS by market share, uses the blog format. 34 | - [Joomla!](https://www.joomla.org/) | Another popular CMS written in PHP. 35 | - [WonderCMS](https://www.wondercms.com/) | Claims to be the smallest CMS around. Is definitely small. 36 | 37 | #### E-commerce 38 | 39 | Software for operating and managing an e-shop. 40 | 41 | - [OpenCart](https://www.opencart.com/) 42 | - [Magento](https://magento.com/) 43 | - [PrestaShop](https://www.prestashop.com/en) 44 | 45 | #### File synchronization 46 | 47 | Services that synchronize files across systems. 48 | 49 | - [ownCloud](https://owncloud.com/) 50 | - [Syncthing](https://syncthing.net/) 51 | - [Seafile](https://www.seafile.com/en/home/) 52 | 53 | #### Media streaming 54 | 55 | Daemons for streaming digital media. 56 | 57 | - [Jellyfin](https://jellyfin.org/) | Media streaming server capable of handling audio, video, comics, books, and photos. 58 | - [Icecast](https://www.icecast.org/) | Operate your own Internet radio station! 59 | - [Navidrome](https://www.navidrome.org/) | Music streaming software with a web UI and compatible with Subsonic/Airsonic clients. 60 | 61 | #### Photo galleries 62 | 63 | Software for operating a photo gallery. 64 | 65 | - [Chevereto](https://chevereto.com/free) 66 | - [Zenphoto](http://www.zenphoto.org/) 67 | - [Piwigo](http://piwigo.org/) 68 | 69 | #### Wiki software 70 | 71 | You own personal knowledge base! 72 | 73 | - [DokuWiki](https://www.dokuwiki.org/DokuWiki) | A simple wiki that stores content in text files instead of a database. 74 | - [MediaWiki](https://www.mediawiki.org/wiki/MediaWiki) | The software that powers [Wikipedia](https://wikipedia.org). 75 | - [Cowyo](https://github.com/schollz/cowyo) | A minimal wiki/note-taking package. 76 | 77 | ----- 78 | 79 | The master lists of self-hosted alternatives. 80 | 81 | - [Self-Hosted Alternatives](https://github.com/awesome-selfhosted/awesome-selfhosted) | Master List for self-hosted alternative software packages. 82 | - [Self-Hosted Sysadmin](https://github.com/n1trux/awesome-sysadmin) | Similar to the above, but oriented towards the needs of system administrators or IT professionals. 83 | -------------------------------------------------------------------------------- /content/Getting Started/What Is Self-Hosting/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: What is Self-Hosting? 3 | --- 4 | 5 | **The act of providing or serving digital content or an online service typically delivered by a business.** 6 | 7 | It is generally served locally, as hosting it on a VPS or other Internet-residing machine is not "hosting" it yourself. There is still a middleman, and that is the owner/operator of that Internet-residing machine. 8 | 9 | --- 10 | 11 | One of the easiest things to self-host with the lowest barrier to entry is a website. For the most basic website of your own, all you need is a domain name and a webserver. Then you throw a few lines of HTML in a file and you have yourself a "website". With a service like Let's Encrypt, securing the site with a SSL certificate is easy too. 12 | 13 | A lot of different services that you can self-host are "websites". There are dynamic sites with robust content management systems like Joomla!, Drupal, WordPress, or b2evolution. There are forums like phpBB, MyBB, vBulletin, Discourse, etc. Knowledge bases like DokuWiki, MediaWiki, BookStack, or Gollum are also websites. These websites only require a webserver, an interpreter (PHP), and a database (SQLite, PostgreSQL, MySQL). 14 | 15 | Just about everything these days has a web UI or frontend to make things easier. HTTP/HTML/JS are well-understood standards that are ubiquitous. There are many libraries for converting or presenting your content in a web-friendly way for almost all programming languages you can learn. 16 | 17 | It can be hard for someone unfamiliar to find the difference between the "website" frontend and the content backend. Sometimes the difference is almost non-existent. Sometimes there are many layers and systems working behind the scenes to make it happen. 18 | 19 | It may be better to say that everything can be "accessed" through a website, even if it isn't one *per-se*. And if it can't, there's probably a separate piece of software that makes a web UI for it. 20 | 21 | Examples of services with a web UI or separate web-based frontends are: BitTorrent clients like qBittorrent/Transmission, media streaming servers like Jellyfin/Navidrome, file synchronization services like Nextcloud/ownCloud/Seafile, communication services like Synapse/InspIRCd/jabberd/Mumble, and many more. 22 | 23 | Other services use the server-client model where the entire package is in two parts. The server part that runs at all time to serve content and the client part that connects to have content served to it. Examples are: game servers like Rust/Minecraft/Factorio, FTP servers, email servers, and more. 24 | -------------------------------------------------------------------------------- /content/Getting Started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Getting Started 3 | --- 4 | 5 | Here are some explanations for the basics and themes of Self-Hosted. 6 | 7 | - [Difficulty tiers]({{}} "Difficulty tiers") 8 | - [How do I self-host?]({{}} "Self-hosted how-to") 9 | - [Intro to reverse proxies]({{}} "Intro to reverse proxies") 10 | - [Operating systems]({{}} "Operating systems") 11 | - [What are some self-hosted alternatives to stuff I use every day?]({{}} "Self-hosted alternatives") 12 | - [What is self-hosting?]({{}} "What is self-hosting?") 13 | -------------------------------------------------------------------------------- /content/Guides/DevOps Toolchains/Gitlab Kubernetes/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Gitlab Installation 3 | tags: [normal] 4 | --- 5 | ___ 6 | 7 | ## Introduction 8 | 9 | In this article, I will describe all the steps required to setup GitLab CI/CD in kuberntes using kustomize. 10 | We will go through how to run GitLab on Kubernetes when you have related resources `postgres`, `redis`, `minio`, `tls certificates` etc already available in your setup. 11 | 12 | This is a very common scenario in companies and also for self-hosting that you are already using these services in your environment and prefer to use the same for gitlab. 13 | 14 | 15 | *The all in one production installation may be easily performed with Helm. You can refer to official documentation from gitlab if that is your requirement.* 16 | 17 | 18 | ### Requirements 19 | 20 | You will need the following in order to run gitlab. 21 | 22 | 1. Database : Postgres database is required for gitlab. 23 | 2. Cache : Redis is used for caching. 24 | 3. Storage : Minio is used as object storage for `container registry`, `gitlab backups`, `terraform storage backend`, `gitlab artifacts` etc. 25 | 4. Ingress Controller : Nginx ingress is part of installation. 26 | 5. Persistent Volume : Gitaly will store `repository data` data on disk, for that your kubernetes cluster must have a way of provisioning storage. You can install [local path provisioner](https://github.com/rancher/local-path-provisioner) in your cluster for dynamically provisioning volumes. 27 | 28 | * Repositories 29 | 1. [Gitlab Manifests](https://github.com/kha7iq/gitlab-k8s) 30 | 2. [SubVars App](https://github.com/kha7iq/subvars) 31 | 32 | *Info: You can swap minio with any other object storage i.e S3 by changing connection info secret* 33 | 34 | ## Lets get Started 35 | 36 | When installing gitlab with helm it generates the configmaps after rendering the templates with parameters, we can manually change these values in configmaps but its a hassle and not convenient. 37 | 38 | To make this process easy we will use a tool called [subvars](https://github.com/kha7iq/subvars) which will let us render these values from command line. Install it by following the instructions on [github](https://github.com/kha7iq/subvars) page, we will use it later. 39 | 40 | 41 | 1. Download the release with manifests from [github](https://github.com/kha7iq/gitlab-k8s) alternatively you can clone the repo, if you are cloning the repo remove the `.git` folder afterwards as it creates issues some times when rendering multiple version of the same file with subvars. 42 | 43 | ```bash 44 | export RELEASE_VER=1.0 45 | wget -q https://github.com/kha7iq/gitlab-k8s/archive/refs/tags/v${RELEASE_VER}.tar.gz 46 | tar -xf v${RELEASE_VER}.tar.gz 47 | cd gitlab-k8s-${RELEASE_VER} 48 | ``` 49 | 50 | 51 | 2. Lets start by setting the url for gitlab in our [kustomization file](https://github.com/kha7iq/gitlab-k8s/blob/master/ingress-nginx/kustomization.yaml) within ingress-nginx folder. You will find two blocks, one for web-ui and second for registry along with tls-secret-name for https. 52 | 53 | ```yaml 54 | patch: |- 55 | - op: replace 56 | path: /spec/rules/0/host 57 | value: your-gitlab-url.example.com 58 | - op: replace 59 | path: /spec/tls/0/hosts/0 60 | value: your-gitlab-url.example.com 61 | - op: replace 62 | path: /spec/tls/0/secretName 63 | value: example-com-wildcard-secret 64 | ``` 65 | 66 | 3. We can create `minio-conn-secret` containing configuration for minio. It will be used for all the enabled S3 buckets except gitlab backups, we will create that separately. Input the information as per your setup and create the kubernetes secret. 67 | 68 | * minio.config 69 | ```bash 70 | cat << EOF > minio.config 71 | provider: AWS 72 | region: us-east-1 73 | aws_access_key_id: 4wsd6c468c0974006d 74 | aws_secret_access_key: 5d5e6c468c0974006cdb41bc4ac2ba0d 75 | aws_signature_version: 4 76 | host: minio.example.com 77 | endpoint: "https://minio.example.com" 78 | path_style: true 79 | EOF 80 | ``` 81 | * Kubernetes secret 82 | ```bash 83 | kubectl create secret generic minio-conn-secret \ 84 | --from-file=connection=minio.config --dry-run=client -o yaml >minio-connection-secret.yml 85 | ``` 86 | 87 | 4. Next step is to create a secret with mino configuration for gitlab backup storage. Just replace minio endpoint, bucket name, access key & secret key. 88 | 89 | ```bash 90 | cat << EOF > storage.config 91 | [default] 92 | access_key = be59435b326e8b0eaa 93 | secret_key = 6e0a10bd2253910e1657a21fd1690088 94 | bucket_location = us-east-1 95 | host_base = https://minio.example.com 96 | host_bucket = https://minio.example.com/gitlab-backups 97 | use_https = True 98 | default_mime_type = binary/octet-stream 99 | enable_multipart = True 100 | multipart_max_chunks = 10000 101 | multipart_chunk_size_mb = 128 102 | recursive = True 103 | recv_chunk = 65536 104 | send_chunk = 65536 105 | server_side_encryption = False 106 | signature_v2 = True 107 | socket_timeout = 300 108 | use_mime_magic = False 109 | verbosity = WARNING 110 | website_endpoint = https://minio.example.com 111 | EOF 112 | ``` 113 | 114 | ```bash 115 | kubectl create secret generic storage-config --from-file=config=storage.config \ 116 | --dry-run=client -o yaml > secrets/storage-config.yml 117 | ``` 118 | 119 | > All other secrets can be used as is from repository or you can change all of them following [gitlab documentation](https://docs.gitlab.com/charts/installation/secrets.html) 120 | 121 | 5. One of the most important secret is `gitlab-rails-secret`, in case of a disaster where you have to restore gitlab from a backup you must apply the same secret in your cluster as these keys will be used to decrypt the database etc from backup. Make sure you keep this consistent after first install. 122 | 123 | 124 | 6. We reached the last part, Its alot of work to change database and other parameters one by one in configmaps. 125 | I have implemented some templating for this which can provide all the values vi environment variables and render the manifests with subvars, it will output these to destination folder and replace all the parameters defined as go templates. 126 | The values are self explanatory, `GITLAB_GITALY_STORAGE_SIZE` variable is used to specify how much storage is needed for gitaly and `GITLAB_STORAGE_CLASS` is the name of storage class. 127 | 128 | ```bash 129 | GITLAB_URL=gitlab.example.com \ 130 | GITLAB_REGISTRY_URL=registry.example.com \ 131 | GITLAB_PAGES_URL=pages.example.com \ 132 | GITLAB_POSTGRES_HOST=192.168.1.90 \ 133 | GITLAB_POSTGRES_PORT=5432 \ 134 | GITLAB_POSTGRES_USER=gitlab \ 135 | GITLAB_POSTGRES_DB_NAME=gitlabhq_production \ 136 | GITLAB_REDIS_HOST=192.168.1.91:6379 \ 137 | GITLAB_GITALY_STORAGE_SIZE=15Gi \ 138 | GITLAB_STORAGE_CLASS=local-path \ 139 | subvars dir --input gitlab-k8s-1.0 --out dirName 140 | ``` 141 | Change into `dirName/gitlab-k8s-1.0` you can have a look to confirm if everything is in order before applying this in cluster. 142 | 143 | 7. The final step is to create the namespace `gitlab` and build with kustomize or kubectl. I prefer kustomize but you can also use kubectl with `-k` flag. 144 | 145 | * Create namespace 146 | ```bash 147 | kubectl create namespace gitlab 148 | ``` 149 | 150 | * Apply the final manifest 151 | ```bash 152 | kustomize build gitlab-k8s-1.0/ | kubectl apply -f - 153 | # or following if you have already changed into directory 154 | kustomize build . | kubectl apply -f - 155 | 156 | # With kubectl 157 | kubectl apply -k gitlab-k8s-1.0/ 158 | # or following if you have already changed into directory 159 | kubectl apply -k . 160 | ``` 161 | 162 | 8. Head over to the endpoint you have configured for gitlab `https://gitlab.example.com` and login. 163 | 164 | 165 | * Note: 166 | Default passwords 167 | > Gitlab 'root' user's password configured as secret 168 | ```bash 169 | LAwGTzCebner4Kvd23UMGEOFoGAgEHYDszrsSPfAp6lCW15S4fbvrVrubWsua9PI 170 | ``` 171 | > Postgres password configured as secret 172 | ```bash 173 | ZDVhZDgxNWY2NmMzODAwMTliYjdkYjQxNWEwY2UwZGMK 174 | ``` 175 | -------------------------------------------------------------------------------- /content/Guides/DevOps Toolchains/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: DevOps Toolchains 3 | --- 4 | 5 | DevOps is the next evolution of agile methodologies. A cultural shift that brings development and operations teams together. 6 | 7 | No specific DevOps tool or tools equate to “doing DevOps”, but there are plenty of tools that help enable the best practices that a DevOps culture promotes. Generally, these are tools that help streamline DevOps pipelines. 8 | 9 | 10 | 11 | #### DevOps Toolchains 12 | 13 | - [Gitlab Installation on Kuberntes]({{}} "gitlab") 14 | -------------------------------------------------------------------------------- /content/Guides/Get a free domain name and certificate/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Get a free domain name and certificate 3 | --- 4 | 5 | ___ 6 | 7 | With this tutorial you will get a valid SSL certificate from Let's Encrypt without having to open any incoming ports. You can use the certificate to enable HTTPS with your reverse proxy (Apache, Nginx, Caddy, ...) or other self hosted service. Since it only uses acme.sh which is a shell script it should work on everything that runs linux. 8 | 9 | The tutorial was written for and tested with Duck DNS and deSEC, but you can (in theory, because I did sadly encounter a few bugs/incompatibilities here and there) use [every of the 150+ DNS provider supported by acme.sh (there is also a second page at the end!)](https://github.com/acmesh-official/acme.sh/wiki/dnsapi). If you want to use a wildcard certificate I would recommend deSEC because Duck DNS currently has a bug/incompatibility with acme.sh. 10 | 11 | If you want to use another DNS provider you can skip right to [2. Install acme.sh](#2-install-acmesh), but need to change the parameter `--dns YOURDNS` in all the commands and set all necessary variables yourself according to the [acme.sh DNS API wiki](https://github.com/acmesh-official/acme.sh/wiki/dnsapi). 12 | 13 | 14 | ## 1. Sign in/up to a DynDNS provider 15 | 16 | #### 1. Duck DNS 17 | 18 | 1. Go to https://www.duckdns.org/ and sign in with one of the providers at the top. 19 | 20 | 2. After your are successfully logged in, enter the sub domain you want and press `add domain`. This domain name (including `.duckdns.org`) needs to be replaced in all commands where you see `YOURDOMAIN`. 21 | 22 | 3. Enter either 23 | 24 | 1. the local IP address of your server if your server is not accessible from the internet 25 | 26 | 2. or the public IP address of your server if your server is accessible from the internet 27 | 28 | in the `current ip` field and press `update ip`. 29 | 30 | The choosen sub domain name will be the one that the server/service needs to be addressed when using the certificate, for it to be valid. Since you set the sub domain to the IP address of your server it should be reachable when the sub domain name get's translated by any DNS. Depending on your home router you might need add an exception of the sub domain name to the DNS rebind protection. 31 | 32 | 4. Keep the website open, because you need it in a later step. 33 | 34 | 35 | #### 2. deSEC 36 | 37 | 1. Go to https://desec.io/signup and create a new account. It doesn't matter what you choose for `Do you want to set up a domain right away?` because you can add a domain afterwards. 38 | 39 | 2. Log into your deSEC account. 40 | 41 | 3. If you havent't added a domain during signup, click on the `+` button on the right and enter the subdomain you want and add `.dedyn.io` after your subdomain so it looks like `example.dedyn.io`. If the sub domain was added successfull there will be a popup with setup instructions which you will not need and can be closed. This domain name needs to be replaced in all commands where you see `YOURDOMAIN`. 42 | 43 | 4. Optionally add a DNS record: Click onto your sub domain name and then the `+` button on the right. A popup with `Create New Record Set` will show up. Choose the `Record Set Type` value `A` and enter either: 44 | 45 | 1. the local IP address of your server if your server is not accessible from the internet 46 | 47 | 2. or the public IP address of your server if your server is accessible from the internet 48 | 49 | in the `IPv4 address` field and press `save`. 50 | 51 | The choosen sub domain name will be the one that the server/service needs to be addressed when using the certificate, for it to be valid. Since you set the sub domain to the IP address of your server it should be reachable when the sub domain name get's translated by any DNS. Depending on your home router you might need add an exception of the sub domain name to the DNS rebind protection. 52 | 53 | 5. At the top menu change to `TOKEN MANAGEMENT` and press the `+` button on the right. A popup with `Generate New Token` will show up. Enter a token name of your choosing (the name doesn't matter and is only for the convenience of knowing what the token is used for) and press `save`. 54 | 55 | Now there will be a green bar at in the popup saying 56 | 57 | ``` 58 | Your new token's secret value is: aaaabbbbccccddddeeeeffffgggg 59 | It is only displayed once. 60 | ``` 61 | 62 | Copy the secret token value into an editor because you need it later. But don't worry, you can always come back to this step and generate a new token in case you loose the secret token value. 63 | 64 | 65 | ## 2. Install acme.sh 66 | 67 | 1. Install acme.sh: 68 | 69 | ```sh 70 | curl https://get.acme.sh | sh -s 71 | ``` 72 | 73 | If you wish to receive an expiration notification email before your certificates expires you can insert your email address and install acme.sh with the following command: 74 | 75 | ```sh 76 | curl https://get.acme.sh | sh -s email=my@example.com 77 | ``` 78 | 79 | You can find more information on expiration emails here: https://letsencrypt.org/docs/expiration-emails/ 80 | 81 | 2. Restart the terminal. 82 | 83 | 84 | ## 3. Configure acme.sh 85 | 86 | 1. Enable auto update: 87 | 88 | ```sh 89 | acme.sh --upgrade --auto-upgrade 90 | ``` 91 | 92 | 2. Change the default CA to Let's Encrypt (see explanation in the remarks): 93 | 94 | ```sh 95 | acme.sh --set-default-ca --server letsencrypt 96 | ``` 97 | 98 | 3. Take the token from the DynDNS provider website and insert it into either one of the following commands between the quotation marks: 99 | 100 | For deSEC: 101 | 102 | ```sh 103 | export DEDYN_TOKEN="aaaabbbbccccddddeeeeffffgggg" 104 | ``` 105 | 106 | For Duck DNS: 107 | 108 | ```sh 109 | export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" 110 | ``` 111 | 112 | 113 | ## 3. Issue a certificate 114 | 115 | In the following commands you need to replace `YOURDNS` with either `dns_duckdns` when you chose Duck DNS or `dns_desec` when you chose deSEC. 116 | 117 | Insert your registered sub domain in the following command to issue your first certificate: 118 | 119 | ```sh 120 | acme.sh --issue --dns YOURDNS --domain YOURDOMAIN 121 | ``` 122 | 123 | If you have registered more domains you can add them as alternative names to the certificate by adding more `--domain YOURDOMAIN` at the end: 124 | 125 | ```sh 126 | acme.sh --issue --dns YOURDNS --domain subdomain.example.com --domain subdomain-nextcloud.example.com --domain subdomain-vaultwarden.example.com 127 | ``` 128 | 129 | The first given `--domain` of the `--issue` command will be the primary domain of the certificate and the only one domain you will need to state when running other acme.sh commands. I would recommend to keep the primary domain the same when adding/removing other sub domains. 130 | 131 | 132 | ## 4. Install the certificate to a target directory 133 | 134 | After the certificate is issued acme.sh needs to copy the certificate to a target directory and can a command after each renewal of the certificate. 135 | 136 | The target directory and reload command specific to the primary domain (the domain of the first `--domain` parameter). So the target directory (or at least filename) must be unique and the reload command must be for this specific certificate. 137 | 138 | The following commad sets the variable `CERTIFICATE_DIRECTORY` (which is just for ease of use in the next command) with a directory of your choosing and creates the directory. 139 | 140 | ```sh 141 | CERTIFICATE_DIRECTORY=$HOME/certificates 142 | mkdir -p "$CERTIFICATE_DIRECTORY" 143 | ``` 144 | 145 | Now you tell acme.sh where and under which filenames it should copy the certificate (`--cert-file` and `--fullchain-file`) and key (`--key-file`) files and which command (`--reloadcmd`) it should run to restart your reverse proxy or other service. 146 | 147 | ```sh 148 | acme.sh --install-cert --domain YOURDOMAIN --cert-file "$CERTIFICATE_DIRECTORY/certificate.pem" --fullchain-file "$CERTIFICATE_DIRECTORY/fullchain.pem" --key-file "$CERTIFICATE_DIRECTORY/key.pem" --reloadcmd "sudo service apache2 force-reload" 149 | ``` 150 | 151 | 152 | ## 5. Automatic renewal 153 | 154 | Certificates are only valid for 90 days. Because of this acme.sh will create a daily cron job running at a random time at night that will: 155 | * renew every certificate after 60 days 156 | * copy the certificate and key files to their destination (as configured in [4. Install the certificate to a target directory](#4-install-the-certificate-to-a-target-directory)) 157 | * run the reload command (as configured in [4. Install the certificate to a target directory](#4-install-the-certificate-to-a-target-directory)) 158 | 159 | ___ 160 | 161 | ### Remarks: 162 | 163 | 1. How can I add more domain names to my certificate? 164 | 165 | Run the command from [3. Issue a certificate](#3-issue-a-certificate) again with all domain names (old and new) that you want in your certificate. As long as the primary domain stays the same it is not necessary to install the certificate again. 166 | 167 | After changing the domnain names with the `--issue` command, it will not copy the new certificate to it's destination or run the `--reloadcmd` that was set with the `--install-cert` command. You will either have to do it by yourself or run the `--install-cert` command again (with all the same parameters as before) or copy the files manually from the `.acme.sh` directory in your home directory. If you don't know the parameters from last time you can look them up in the info about the certificate (see next point). 168 | 169 | 1. Show configuration of acme.sh: 170 | 171 | ```sh 172 | acme.sh --info 173 | ``` 174 | 175 | 1. Show configuration of a certificate: 176 | 177 | ```sh 178 | acme.sh --info -d YOURDOMAIN 179 | ``` 180 | 181 | 1. List all certificates issued with acme.sh: 182 | 183 | ```sh 184 | acme.sh --list 185 | ``` 186 | 187 | 1. Remove a certificate from acme.sh: 188 | 189 | ```sh 190 | acme.sh --remove -d YOURDOMAIN 191 | ``` 192 | 193 | 1. Why change the default CA to Let's Encrypt? 194 | 195 | I did encounter bugs with the default CA of acme.sh (ZeroSSL) which where gone once I switched to Let's Encrypt. 196 | 197 | 1. How to create a wildcard certificate: 198 | 199 | Add *.YOURSUBDOMAIN.YOURSITEDOMAIN.com as an alternative domain name to your certificate: 200 | 201 | ```sh 202 | acme.sh --issue --dns dns_... --domain YOURSUBDOMAIN.YOURSITEDOMAIN.com --domain *.YOURSUBDOMAIN.YOURSITEDOMAIN.com 203 | ``` 204 | 205 | In theory it works with Duck DNS, but if you add the wildcard as an alternative name there sadly is a bug or incompatibility (depending on who you want to blame) and acme.sh runs into an infitie loop. It works if you only use the wildcard domain as the primary domain name. But with only a wildcard in the certificate I don't know if this certificate will play nice with all devices, browsers and applications. 206 | 207 | If you want to use acme.sh and create a wildcard certificate desec.io works as a DNS provider. 208 | 209 | 1. How to create a staging certificate for testing: 210 | 211 | Add the `--test` parameter to the `--issue` command to create test (or staging) certificates which are not valid but are better if you are just testing things. The certificate will stay in the staging environment until you renew it without the `--test` parameter: 212 | 213 | ```sh 214 | acme.sh --renew -d YOURSUBDOMAIN.YOURSITEDOMAIN.com 215 | ``` 216 | 217 | More on that topic here: https://letsencrypt.org/docs/staging-environment/ 218 | 219 | 1. Uninstall acme.sh: 220 | 221 | ```sh 222 | acme.sh --uninstall 223 | ``` 224 | 225 | and delete the `.acme.sh` directory in your home directory. 226 | -------------------------------------------------------------------------------- /content/Guides/Reverse Proxy Servers/Nginx/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Nginx Reverse Proxy 3 | tags: [normal] 4 | --- 5 | ___ 6 | ## What is a reverse proxy? 7 | To learn what a reverse proxy is and why you should use one, read the explanation [here](/explanations/#reverse-proxies). 8 | 9 | ## Prerequisites 10 | There are some prerequisites you'll need before setting up a reverse proxy server. The first thing you'll need is to have port 80 and 443 of your public IP address forwarded to the machine you want to use as a proxy. This can be configured through your router's admin page. You will also need a domain name with an A record that points to your public IP. Finally, you'll need some services running on your local network for you to proxy. 11 | 12 | ## nginx installation 13 | 14 | ### Debian-based systems 15 | First, type `sudo apt update` to update the package information. 16 | Then, type `sudo apt install nginx` to install nginx. 17 | Finally, allow the necessary ports using `sudo ufw allow 80/tcp` and `sudo ufw allow 443/tcp`. 18 | ### RHEL-based systems 19 | First, enable the EPEL repository using `sudo yum install epel-release`. 20 | Then, type `sudo yum install nginx` to install nginx. 21 | Finally, allow the necessary ports using `sudo firewall-cmd --permanent --zone=public --add-service=http` and `sudo firewall-cmd --permanent --zone=public --add-service=https`. Also, type `sudo firewall-cmd --reload` to reload the firewall. 22 | 23 | Make sure nginx starts up using `sudo systemctl start nginx`. 24 | 25 | To verify that nginx is working properly, visit `http://yoursite.com` and you should see a nginx welcome page similar to what's shown below. This specific page may vary depending on your distro. 26 | 27 | ![Nginx Welcome Page][1] 28 | 29 | ## Deciding the reverse proxy structure 30 | 31 | Before we actually create our reverse proxy configuration, we have to decide which local servers will handle each of the subdomains. For example, if I wanted `nextcloud.yoursite.com` to be handled by a server at `192.168.0.230`, I could add a nginx configuration for that. 32 | 33 | Once you've decided which subdomains you'll use, add DNS CNAME records that map the subdomain to your main domain name. Below is an example in Google Domains, but it will vary depending on your DNS provider. 34 | 35 | ![Google Domains CNAME Records][2] 36 | 37 | ## Modifying the configuration files 38 | Note: Editable templates for each of the config files shown in this guide can be found at [this GitHub repo](https://github.com/Rav4s/NginX-Config-Files). 39 | 40 | In order to set up the reverse proxy, we have to remove the default website and add our own configuration to handle each subdomain. In this guide, we'll create two config files, one for a www/non-www domain and one for any other subdomain. 41 | 42 | ### Removing the default configuration 43 | 44 | To remove the default configuration, we can type `cd /etc/nginx/sites-enabled/` to enter the directory and `sudo rm default` to remove the config file. 45 | 46 | ### Creating the first config file 47 | 48 | To begin, type `cd /etc/nginx/sites-available/` to enter the sites-available directory. Then type `sudo vi reverse-proxy.conf` to begin editing the file. 49 | 50 | The first thing you'll want to add in this file is a server block. This server block will listen on `http://www.yoursite.com` and redirect visitors to `https://www.yoursite.com`. 51 | 52 | ``` 53 | server { 54 | listen 80; 55 | server_name www.yoursite.com; 56 | return 301 https://www.yoursite.com$request_uri; 57 | } 58 | ``` 59 | 60 | The next thing to add is another server block, which will listen on `http://yoursite.com` and redirect visitors to `https://www.yoursite.com` 61 | 62 | ``` 63 | server { 64 | listen 80; 65 | server_name yoursite.com; 66 | return 301 https://www.yoursite.com$request_uri; 67 | } 68 | ``` 69 | 70 | Our third server block will listen on `https://yoursite.com`, and redirect the https traffic to `https://www.yoursite.com`. This server block also contains information about the SSL certificates, which we will modify later when we obtain them. 71 | 72 | ``` 73 | server { 74 | listen 443; 75 | server_name yoursite.com; 76 | return 301 https://www.yoursite.com$request_uri; 77 | 78 | # SSL Configuration 79 | 80 | ssl_certificate /etc/letsencrypt/live/yoursite.com/fullchain.pem; # managed by Certbot 81 | ssl_certificate_key /etc/letsencrypt/live/yoursite.com/privkey.pem; # managed by Certbot 82 | ssl on; 83 | ssl_session_cache builtin:1000 shared:SSL:10m; 84 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 85 | ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 86 | ssl_prefer_server_ciphers on; 87 | 88 | } 89 | ``` 90 | 91 | This last server block will perform the actual proxying. It will listen on `https://www.yoursite.com` and proxy requests to a backend server. To do this, we can add a location block within this server block. Within the location block, we set proxy headers which nginx forwards to the backend, and we add the proxy pass and proxy redirect with the IP address and port of the backend server. The last few lines are optional, but I recommend using them because they heighten the security of your server. These lines enable HSTS, clickjacking protection, XSS protection, and disable content and MIME sniffing. Finally, we can add a line which adds the trailing slash to all URLs. 92 | 93 | ``` 94 | server { 95 | 96 | listen 443; 97 | server_name www.yoursite.com; 98 | 99 | # SSL Configuration 100 | 101 | ssl_certificate /etc/letsencrypt/live/yoursite.com/fullchain.pem; # managed by Certbot 102 | ssl_certificate_key /etc/letsencrypt/live/yoursite.com/privkey.pem; # managed by Certbot 103 | ssl on; 104 | ssl_session_cache builtin:1000 shared:SSL:10m; 105 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 106 | ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 107 | ssl_prefer_server_ciphers on; 108 | 109 | # Set the access log location 110 | 111 | access_log /var/log/nginx/yoursite.access.log; 112 | 113 | location / { 114 | 115 | # Set the proxy headers 116 | 117 | proxy_set_header Host $host; 118 | proxy_set_header X-Real-IP $remote_addr; 119 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 120 | proxy_set_header X-Forwarded-Proto $scheme; 121 | 122 | # Configure which address the request is proxied to 123 | 124 | proxy_pass http://yourserverip:yourport/; 125 | proxy_read_timeout 90; 126 | proxy_redirect http://yourserverip:yourport https://www.yoursite.com; 127 | 128 | # Security headers 129 | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; 130 | add_header X-Frame-Options DENY; 131 | add_header X-Content-Type-Options nosniff; 132 | add_header X-XSS-Protection "1; mode=block"; 133 | add_header Referrer-Policy "origin"; 134 | 135 | # Add the trailing slash 136 | rewrite ^([^.]*[^/])$ $1/ permanent; 137 | } 138 | 139 | } 140 | ``` 141 | 142 | After adding these lines, type `:wqa` to save the file and exit Vim. 143 | 144 | There's one more step before we can use this config: symlinking it to the sites-enabled directory (which nginx reads). To do this, type `sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf`. 145 | 146 | ### Creating the second config file 147 | 148 | This next config file will serve as a template for any other subdomains you want to add to your reverse proxy. To begin making this config file, type `cd /etc/nginx/sites-available/` and then `sudo vi SUBDOMAIN.conf`, replacing "SUBDOMAIN" with the subdomain you want to configure. 149 | 150 | The first thing we'll add in this file is a server block. This server block will listen on `http://YOURSUBDOMAIN.YOURSITEDOMAIN.com` and redirect visitors to `https://YOURSUBDOMAIN.YOURSITEDOMAIN.com`. 151 | 152 | ``` 153 | server { 154 | listen 80; 155 | server_name YOURSUBDOMAIN.YOURSITEDOMAIN.com; 156 | return 301 https://$host$request_uri; 157 | } 158 | ``` 159 | 160 | This next server block will perform the actual proxying. It will listen on `https://YOURSUBDOMAIN.YOURSITEDOMAIN.com` and proxy requests to your backend server. To do this, we'll add a location block inside the server block. Within the location block, we set proxy headers which nginx forwards to the backend, and we add the proxy pass and proxy redirect with the IP address and port of the backend server. Again, the security headers at the bottom are optional, but they will greatly improve the security of your server, so I recommend that you add them. 161 | 162 | ``` 163 | server { 164 | 165 | listen 443; 166 | server_name YOURSUBDOMAIN.YOURSITEDOMAIN.com; 167 | 168 | # SSL configuration 169 | 170 | ssl_certificate /etc/letsencrypt/live/YOURSUBDOMAIN.YOURSITEDOMAIN.com/fullchain.pem; # managed by Certbot 171 | ssl_certificate_key /etc/letsencrypt/live/YOURSUBDOMAIN.YOURSITEDOMAIN.com/privkey.pem; # managed by Certbot 172 | ssl on; 173 | ssl_session_cache builtin:1000 shared:SSL:10m; 174 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 175 | ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 176 | ssl_prefer_server_ciphers on; 177 | 178 | # Set the access log location 179 | 180 | access_log /var/log/nginx/YOURSUBDOMAIN.access.log; 181 | 182 | location / { 183 | 184 | # Set the proxy headers 185 | 186 | proxy_set_header Host $host; 187 | proxy_set_header X-Real-IP $remote_addr; 188 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 189 | proxy_set_header X-Forwarded-Proto $scheme; 190 | 191 | # Configure which address the request is proxied to 192 | 193 | proxy_pass http://YOURSERVER:YOURPORT; 194 | proxy_read_timeout 90; 195 | proxy_redirect http://YOURSERVER:YOURPORT https://YOURSUBDOMAIN.YOURSITEDOMAIN.com; 196 | 197 | # Set the security headers 198 | 199 | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; #HSTS 200 | add_header X-Frame-Options DENY; #Prevents clickjacking 201 | add_header X-Content-Type-Options nosniff; #Prevents MIME sniffing 202 | add_header X-XSS-Protection "1; mode=block"; #Prevents cross-site scripting attacks 203 | add_header Referrer-Policy "origin"; 204 | } 205 | 206 | } 207 | ``` 208 | 209 | After adding these lines, type `:wqa` to save the file and exit Vim. 210 | 211 | Finally, to symlink this file to the sites-enabled directory, type `sudo ln -s /etc/nginx/sites-available/SUBDOMAIN.conf /etc/nginx/sites-enabled/SUBDOMAIN.conf`. 212 | 213 | To add any additional subdomains, simply copy the previous config file and replace the server_name with the new subdomain, along with the backend's IP address and port. Then symlink the new file to the sites-enabled directory. 214 | 215 | ## Restarting nginx 216 | 217 | If you try to restart nginx at this stage (`sudo systemctl restart nginx`), you'll probably see a few errors saying that the certificate files don't exist. In order to get nginx to start, we'll have to use a temporary certificate. 218 | 219 | To obtain a temporary certificate and store it in the working directory, type `openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem`. Two files, `key.pem` and `certificate.pem` will be stored in your working directory. 220 | 221 | Now modify these two lines in your config files 222 | 223 | ` ssl_certificate /etc/letsencrypt/live/yoursite.com/fullchain.pem; # managed by Certbot` 224 | `ssl_certificate_key /etc/letsencrypt/live/yoursite.com/privkey.pem; # managed by Certbot` 225 | 226 | so that they look like this: 227 | 228 | `ssl_certificate /path/to/certificate.pem; # managed by Certbot` 229 | `ssl_certificate_key /path/to/key.pem; # managed by Certbot` 230 | 231 | Make sure to replace `/path/to/` with the path to your certificate and key files. 232 | 233 | After modifying these lines in each config, we can restart nginx using `sudo systemctl restart nginx`. 234 | 235 | ## Obtaining Let's Encrypt SSL certificates 236 | 237 | Now that nginx has restarted with the new configuration, we can obtain SSL certificates from Let's Encrypt, a certificate authority that provides free certificates. To obtain a Let's Encrypt certificate, we can use Certbot. 238 | 239 | To install Certbot on a Debian-based distro, type `sudo apt install python3-certbot-nginx`. 240 | 241 | To install on a RHEL-based distro, type `sudo yum install certbot python3-certbot-nginx`. 242 | 243 | Then, to obtain certificates for your www and non-www domains, type `sudo certbot --nginx -d YOURSITEDOMAIN.com -d www.YOURSITEDOMAIN.com`. 244 | 245 | Certbot will ask for some information, including your email address, agreement to the Terms of Service, and whether or not you want to subscribe to their newsletter. Then, Certbot will obtain your certificate. 246 | 247 | To obtain a certificate for any additional subdomains, type `sudo certbot --nginx -d sub.domain.com`, replacing `sub.domain.com` with the proper subdomain address. 248 | 249 | Certbot will automatically update the config files with the path to your new certificates, so you don't need to do that manually. 250 | 251 | Once you've obtained all the certificates you need, restart nginx with `sudo systemctl restart nginx`. 252 | 253 | Now, visit each of your subdomains and ensure that they are accessible over https. 254 | 255 | ### Auto-renewal cron job 256 | 257 | The last thing we should do is to set up the auto-renewal of SSL certificates using cron. To do this, open the crontab for editing by typing `sudo crontab -e`. 258 | 259 | Then add the following line to the crontab to automatically try to renew the certificates at 1:00am every day: 260 | 261 | `0 1 * * * certbot renew --deploy-hook "systemctl restart nginx"` 262 | 263 | ## Conclusion 264 | 265 | In conclusion, a reverse proxy allows you to easily host multiple sites on the same IP address without exposing unnecessary ports. If you enjoyed this article, feel free to check out [my website](https://www.yeetpc.com), where I post articles about upgrading/restoring computers, securing your servers, and more. Thanks for reading and happy self-hosting! 266 | 267 | [1]: data:image/png;base64,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 268 | 269 | [2]: data:image/png;base64,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 270 | -------------------------------------------------------------------------------- /content/Guides/Reverse Proxy Servers/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Reverse Proxy Servers 3 | --- 4 | 5 | Reverse proxies are daemons that accept connections based on host or port, establish a connection to a backend service based on the connection request, and pass data between the client/backend. 6 | 7 | #### Reverse proxy servers 8 | 9 | - [nginx]({{}} "nginx") 10 | -------------------------------------------------------------------------------- /content/Guides/Virtual Private Networks/Wireguard/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: WireGuard 3 | tags: [normal] 4 | --- 5 | 6 | WireGuard is a secure VPN tunnel that aims to provide a VPN that is easy to use, fast, and with low overhead. 7 | 8 | It is cross-platform, but it is the part of the Linux kernel by default with only the need of userland tools to configure and deploy it. 9 | 10 | #### Preface 11 | 12 | From now on, we are going to assume that we are working on Linux to configure WireGuard with one server and at least one client. 13 | 14 | This guide assumes that this configuration is being performed as root or the superuser. For your distribution this may require you to prefix commands with 'sudo'. 15 | 16 | #### Installation 17 | 18 | You can find more details about installing WireGuard on your own operating system here: https://www.wireguard.com/install/. Please complete installation for both the server and client machine. 19 | 20 | ##### Make the keys 21 | 22 | The first step after installing WireGuard for your distribution is to generate keys. We should do this for the server first, but this will be the same for clients as well. 23 | 24 | cd /etc/wireguard && wg genkey | tee private.key | wg pubkey > public.key 25 | 26 | You should now have **public.key** and **private.key** files in */etc/wireguard/*. 27 | 28 | >It is important to make sure your private key stays private. No private key should ever leave the machine it was generated on. The client and server will only need the public keys for each other. If you are using the private keys for a client on a server, or vice-versa, you are doing something wrong. 29 | 30 | #### Server configuration 31 | 32 | Since this is the server, we need to make a new configuration file for it in */etc/wireguard/*. We will call it **wg0.conf**. The full path should end up being */etc/wireguard/wg0.conf*. 33 | 34 | >Please use your own private key where appropriate. You can view the contents of a text file from the command line with *cat* (e.g.: **cat /path/to/text.file**). 35 | 36 | You can change the **Address** field to use a different address space (e.g.: 192.168.x.1) if you wish. If your server or clients are already using private IP space on a LAN, **use something different**. 37 | 38 | [Interface] 39 | ## Private IP address for the server to use 40 | Address = 10.0.0.1/24 41 | ## When WG is shutdown, flushes current running configuration to disk. Any changes made to the configuration before shutdown will be forgotten 42 | SaveConfig = true 43 | ## The port WG will listen on for incoming connections. 51194 is the default 44 | ListenPort = 51194 45 | ## The server's private key. Not a file path, use the key file contents 46 | PrivateKey = PRIVATEKEY 47 | 48 | After this is done we should be able to start the VPN tunnel and make sure it's enabled. 49 | 50 | >Please consult the documentation for your Linux distribution for enabling/starting services. This guide is using system tools installed on Debian and Debian-based distributions. 51 | 52 | ##### *Debian* 53 | 54 | systemctl enable wg-quick@wg0 && systemctl start wg-quick@wg0 55 | 56 | That should be it for the server portion. 57 | 58 | #### Client configuration 59 | 60 | The client will need keys too. Use the same procedure to [make keys]({{}} "make keys") for the client as we've done for the server. 61 | 62 | Once that is done we need to create a client configuration. Let's make **wg0-client.conf** in */etc/wireguard/*. Full path should be */etc/wireguard/wg0-client.conf*. 63 | 64 | You will need to choose a unique IP for the client. Everything should be the same as the server's private IP except the last octet. 65 | 66 | [Interface] 67 | ## This Desktop/client's private key ## 68 | PrivateKey = CLIENTPRIVATEKEY 69 | 70 | ## Client IP address ## 71 | Address = 10.0.0.CLIENTOCTET/32 72 | 73 | [Peer] 74 | ## WG server public key ## 75 | PublicKey = WGSERVERPUBLICKEY 76 | 77 | ## set ACL ## 78 | ## Uncomment the next line to use VPN for VPN connections only 79 | # AllowedIPs = 10.0.0.0/24 80 | ## If you want to use the VPN for ALL network traffic, uncomment the following line instead 81 | # AllowedIPs = 0.0.0.0/0 82 | 83 | ## Your WG server's PUBLIC IPv4/IPv6 address and port ## 84 | Endpoint = WGSERVERPUBLICIP:51194 85 | 86 | ## Key connection alive ## 87 | PersistentKeepalive = 20 88 | 89 | This should be all you need for configuring the client-end connection. We will need the private client IP you've chosen and the public client key in a bit. 90 | 91 | As with the server, we need to enable the WireGuard client service. We don't start it yet because the server still doesn't know about this client. 92 | 93 | ##### *Debian* 94 | 95 | systemctl enable wg-quick@wg0-client 96 | 97 | #### Configuring the client as a peer 98 | 99 | Back on your server, we need to add the client so the server will accept the client connection. This is where your client private IP and public key will be used. 100 | 101 | Run the following command on the WG server to add the client. 102 | 103 | wg set wg0 peer CLIENTPUBLICKEY allowed-ips CLIENTPRIVATEIP/32 104 | 105 | You should not need to restart the WireGuard service. 106 | 107 | Let's start the WG client service on the client: 108 | 109 | ##### *Debian* 110 | 111 | systemctl start wg-quick@wg0-client 112 | 113 | To check that it works, ping the WG server on its private IP. 114 | 115 | 116 | $ ping -c 1 10.0.0.1 117 | PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 118 | 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.071 ms 119 | 120 | --- 10.0.0.1 ping statistics --- 121 | 1 packets transmitted, 1 received, 0% packet loss, time 0ms 122 | rtt min/avg/max/mdev = 0.071/0.071/0.071/0.000 ms 123 | 124 | If you consider your client Internet connection stable, this next step may not be necessary. You can consider yourself done if you wish. 125 | 126 | THE END (maybe) 127 | 128 | #### WireGuard watchdog (OPTIONAL) 129 | 130 | Next we are going to setup a small cron job that will ping the WG server on its private IP to make sure the connection is still intact. If the connection fails, the tunnel will be restarted. 131 | 132 | You can put this script anywhere, but I usually choose to put it in */usr/local/scripts/*. 133 | 134 | mkdir /usr/local/scripts 135 | 136 | Now for the script. I use **wg-watch.sh**. Let's assume you are going to use */usr/local/scripts/wg-watch.sh* for the **full file path**. 137 | 138 | 139 | #!/usr/bin/bash 140 | # Modified from https://mullvad.net/en/help/running-wireguard-router/ 141 | # ping VPN gateway to test for connection 142 | # if no contact, restart! 143 | 144 | PING=/usr/bin/ping 145 | ## DEBIAN 146 | SERVICE=/usr/sbin/service 147 | 148 | tries=0 149 | while [[ $tries -lt 3 ]] 150 | do 151 | if $PING -c 1 10.0.0.1 152 | then 153 | echo "wg works" 154 | exit 0 155 | fi 156 | echo "wg fail" 157 | tries=$((tries+1)) 158 | done 159 | echo "wg failed 3 times - restarting tunnel" 160 | ## DEBIAN 161 | $SERVICE wg-quick@wg0-client restart 162 | 163 | >Please make sure the paths to certain binaries are congruent with your own system. If they are not, the script will fail. Some distributions put them in different places (e.g.: /bin/bash instead of /usr/bin/bash). If you are not sure where they are, you can do `which binaryname` that should report the full path to the binary. 164 | 165 | $ which bash 166 | /usr/bin/bash 167 | 168 | Make the script executable: 169 | 170 | chmod +x /usr/local/scripts/wg-watch.sh 171 | 172 | 173 | Once we have that done, we need to schedule it. I choose to schedule this every five minutes, but if you want to wait longer that is up to you. 174 | 175 | Schedule the script to run on a regular basis using *cron*. You can find out more about cron here: https://opensource.com/article/17/11/how-use-cron-linux 176 | 177 | We're going to use *crontab* to add this script to the list of jobs. 178 | 179 | crontab -e 180 | 181 | Once the crontab editor is open, add this: 182 | 183 | */5 * * * * /usr/local/scripts/wg-watch.sh 184 | 185 | Write and close the file. Crontab should confirm that it has been updated. 186 | 187 | You should be set with a WireGuard VPN tunnel between a server and a client along with a script to bring the tunnel back up if it fails. 188 | -------------------------------------------------------------------------------- /content/Guides/Virtual Private Networks/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Virtual Private Networks 3 | --- 4 | 5 | Virtual private networks allow you to network any individual computers together into their own network in software. There are many options available. 6 | 7 | Traditional VPN solutions are L2TP/IPsec, OpenVPN, IKEv2 and PPTP. A more modern VPN software solution is WireGuard. You will find information on how to setup your own VPN in this section. 8 | 9 | #### Virtual private network software 10 | 11 | - [WireGuard]({{}} "WireGuard") 12 | -------------------------------------------------------------------------------- /content/Guides/Webservers/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Webservers 3 | --- 4 | -------------------------------------------------------------------------------- /content/Guides/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Guides 3 | --- 4 | 5 | 6 | 7 | Find the link to your desired guide below! 8 | 9 | #### Reverse proxies 10 | 11 | - [nginx]({{}} "nginx") 12 | 13 | #### Virtual private networks 14 | 15 | - [WireGuard]({{}} "WireGuard") 16 | 17 | #### DevOps Toolchains 18 | 19 | - - [Gitlab Installation on Kuberntes]({{}} "gitlab") -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: /r/Selfhosted Official Wiki 3 | --- 4 | 5 | # /r/SelfHosted Official Wiki 6 | ___ 7 | 8 | ## Welcome to the Wiki 9 | We welcome you to explore the pages here and familiarize yourself with the layout of the wiki. If you have any suggestions for better/alternative organization methods, or feedback/questions in general about the wiki, feel free to reach out to: 10 | - [our subreddit moderators](https://www.reddit.com/message/compose/?to=/r/selfhosted) 11 | - [Discord channel](https://discord.gg/BHDByBdKEV) 12 | - [Matrix](https://matrix.to/#/#selfhosted:matrix.org) | View online: [Elements](https://app.element.io/#/room/#selfhosted:matrix.org) 13 | 14 | ### Getting started 15 | 16 | Here you can find a couple of articles about the best ways to get started based on what you're looking to accomplish. 17 | 18 | * Learn about what self-hosting is 19 | * Learn about hosting websites 20 | * Learn about using reverse proxies 21 | * Learn about self-hosted alternatives to popular services and providers 22 | * Learn about the most common ways to self-host 23 | -------------------------------------------------------------------------------- /content/tags/easy/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Easy Tag 3 | --- 4 | -------------------------------------------------------------------------------- /content/tags/hard/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Hard Tag 3 | --- 4 | -------------------------------------------------------------------------------- /content/tags/normal/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Normal Tag 3 | --- 4 | 5 | 6 | -------------------------------------------------------------------------------- /layouts/partials/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layouts/partials/logo.html: -------------------------------------------------------------------------------- 1 | Selfhosted Logo 2 |
/r/Selfhosted Official Wiki
3 | -------------------------------------------------------------------------------- /static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-selfhosted-wiki/wiki/d2588cd7e5811361898f983e0022eb8df0726f0c/static/images/favicon.png -------------------------------------------------------------------------------- /static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r-selfhosted-wiki/wiki/d2588cd7e5811361898f983e0022eb8df0726f0c/static/images/logo.png --------------------------------------------------------------------------------