diff options
author | Christian Cleberg <hello@cleberg.net> | 2023-12-02 23:27:35 -0600 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2023-12-02 23:27:35 -0600 |
commit | 3d4da5ac6000a4871c5caa80d1e61f2782da3069 (patch) | |
tree | 29f36b50823d22f4c7df0a3db3ede83192ae649f /blog/2023-06-23-self-hosting-convos-irc.org | |
parent | dcf0186e16b6ac8f0e00a3aeb9734421ce548177 (diff) | |
download | cleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.tar.gz cleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.tar.bz2 cleberg.net-3d4da5ac6000a4871c5caa80d1e61f2782da3069.zip |
feat: finish converting md to org
Diffstat (limited to 'blog/2023-06-23-self-hosting-convos-irc.org')
-rw-r--r-- | blog/2023-06-23-self-hosting-convos-irc.org | 215 |
1 files changed, 112 insertions, 103 deletions
diff --git a/blog/2023-06-23-self-hosting-convos-irc.org b/blog/2023-06-23-self-hosting-convos-irc.org index 2f62061..b86d01b 100644 --- a/blog/2023-06-23-self-hosting-convos-irc.org +++ b/blog/2023-06-23-self-hosting-convos-irc.org @@ -1,40 +1,43 @@ -+++ -date = 2023-06-23T20:50:00 -title = "Self-Hosting Convos IRC Web Client" -description = "" -+++ +#+title: Self-Hosting Convos: IRC Web Client +#+date: 2023-06-23 -## Convos - -[Convos](https://convos.chat/) is an always-online web client for IRC. It -has a few features that made it attractive to me as a self-hosted option: +** Convos +:PROPERTIES: +:CUSTOM_ID: convos +:END: +[[https://convos.chat/][Convos]] is an always-online web client for IRC. +It has a few features that made it attractive to me as a self-hosted +option: - Extremely simple Docker Compose installation method. -- Runs in the background and monitors chats even while you're not logged in. +- Runs in the background and monitors chats even while you're not logged + in. - Neatly organized sidebar for conversation and client settings. - Ability to connect to different hosts and create profiles for hosts. -- By default, registration is closed to the public. You can enable public - registration on the Settings page or generate invitation links on the - Users page. -- Customization of the client theme, organization name and URL, admin email, - and video service. - -## Docker Installation - -To install Convos, simply create a directory and a `docker-compose.yml` file: - -```sh +- By default, registration is closed to the public. You can enable + public registration on the Settings page or generate invitation links + on the Users page. +- Customization of the client theme, organization name and URL, admin + email, and video service. + +** Docker Installation +:PROPERTIES: +:CUSTOM_ID: docker-installation +:END: +To install Convos, simply create a directory and a =docker-compose.yml= +file: + +#+begin_src sh mkdir ~/convos && cd ~/convos nano docker-compose.yml -``` +#+end_src -With the `docker-compose.yml` file open, paste the configuration below into -the file. -You can customize the host port to be something unique, such as `21897:3000`. -You can also change the `data` folder to be a docker volume instead, if you -prefer. +With the =docker-compose.yml= file open, paste the configuration below +into the file. You can customize the host port to be something unique, +such as =21897:3000=. You can also change the =data= folder to be a +docker volume instead, if you prefer. -```config +#+begin_src config version: '3' services: @@ -47,118 +50,124 @@ services: environment: - CONVOS_REVERSE_PROXY=1 restart: always -``` +#+end_src -Save the `docker-compose.yml` file and bring the container up: +Save the =docker-compose.yml= file and bring the container up: -```sh +#+begin_src sh sudo docker-compose up -d -``` +#+end_src -At this point, Convos is available at `<server_ip>:3000` but not available -to the public. +At this point, Convos is available at =<server_ip>:3000= but not +available to the public. -## Nginx Reverse Proxy +** Nginx Reverse Proxy +:PROPERTIES: +:CUSTOM_ID: nginx-reverse-proxy +:END: +If you're using Nginx, you can create a configuration file for the +convos application. Start by opening the file: -If you're using Nginx, you can create a configuration file for the convos -application. -Start by opening the file: - -```sh +#+begin_src sh nano /etc/nginx/sites-available/convos -``` +#+end_src -Within the nginx configuration file, paste the following content and be sure -to update `convos.example.com` to match your domain and `127.0.0.1:3000` to -match the port you opened in the `docker-compose.yml` file. +Within the nginx configuration file, paste the following content and be +sure to update =convos.example.com= to match your domain and +=127.0.0.1:3000= to match the port you opened in the +=docker-compose.yml= file. -```config +#+begin_src config # Host and port where convos is running upstream convos_upstream { server 127.0.0.1:3000; } server { - if ($host ~ ^[^.]+\.example\.com$) { - return 301 https://$host$request_uri; - } - - listen [::]:80; - listen 80; - server_name convos.example.com; - return 404; + if ($host ~ ^[^.]+\.example\.com$) { + return 301 https://$host$request_uri; + } + + listen [::]:80; + listen 80; + server_name convos.example.com; + return 404; } server { - listen [::]:443 ssl http2; - listen 443 ssl http2; - server_name convos.example.com; - access_log /var/log/nginx/convos.access.log; - error_log /var/log/nginx/convos.error.log; - - location / { - proxy_pass http://convos_upstream; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - client_max_body_size 0; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Request-Base "$scheme://$host/"; - } - - ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; - include /etc/letsencrypt/options-ssl-nginx.conf; - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + listen [::]:443 ssl http2; + listen 443 ssl http2; + server_name convos.example.com; + access_log /var/log/nginx/convos.access.log; + error_log /var/log/nginx/convos.error.log; + + location / { + proxy_pass http://convos_upstream; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + client_max_body_size 0; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Request-Base "$scheme://$host/"; + } + + ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; } -``` +#+end_src -Once the file is saved, link it to the `sites-enabled` directory and restart -Nginx. +Once the file is saved, link it to the =sites-enabled= directory and +restart Nginx. -```sh +#+begin_src sh sudo ln -s /etc/nginx/sites-available/convos /etc/nginx/sites-enabled/convos sudo systemctl restart nginx.service -``` - -## Screenshots +#+end_src -See the screenshots below for an example of the Convos homepage and an +** Screenshots +:PROPERTIES: +:CUSTOM_ID: screenshots +:END: +See the screenshots below for an example of the Convos homepage and an excerpt of the chat screen. -There are numerous themes to choose from; the theme shown in the images +There are numerous themes to choose from; the theme shown in the images below is Dracula. - - - +#+caption: Convos Home +[[https://img.cleberg.net/blog/20230623-convos/convos_home.png%20%22Convos%20Home%22]] -## Registering a Nickname +#+caption: Convos Chat +[[https://img.cleberg.net/blog/20230623-convos/convos_chat.png%20%22Convos%20Chat%22]] -Hop into the server channel so that you can message NickServ. In the case of -Convos, the default sever is libera.chat. -Simply click the `libera` conversation at the top of the sidebar to open it. -Once the chat is open, you can claim a nickname by typing: +** Registering a Nickname +:PROPERTIES: +:CUSTOM_ID: registering-a-nickname +:END: +Hop into the server channel so that you can message NickServ. In the +case of Convos, the default sever is libera.chat. Simply click the +=libera= conversation at the top of the sidebar to open it. Once the +chat is open, you can claim a nickname by typing: -```txt +#+begin_src txt /nick <nick> -``` +#+end_src -If the nickname is available, and you'd like to register the nickname to +If the nickname is available, and you'd like to register the nickname to yourself, you'll need to type another command: -```txt +#+begin_src txt /msg NickServ REGISTER <password> <email> -``` +#+end_src -On libera.chat, the server will send a confirmation email with a command +On libera.chat, the server will send a confirmation email with a command that you must message in IRC to verify registration of the nickname: -```txt +#+begin_src txt /msg NickServ VERIFY REGISTER <nick> <verification_code> -``` +#+end_src -Once entered, the server should confirm registration of the nickname to the -supplied email with the password specified. +Once entered, the server should confirm registration of the nickname to +the supplied email with the password specified. |