{"id":13337527,"url":"https://github.com/astorije/ansible-thelounge","last_synced_at":"2025-04-15T13:09:32.228Z","repository":{"id":36943749,"uuid":"41251219","full_name":"astorije/ansible-thelounge","owner":"astorije","description":"Ansible role to install The Lounge, a self-hosted web IRC client","archived":false,"fork":false,"pushed_at":"2020-03-07T15:19:26.000Z","size":140,"stargazers_count":10,"open_issues_count":11,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-23T01:47:54.716Z","etag":null,"topics":["ansible","ansible-role","irc","irc-client","thelounge"],"latest_commit_sha":null,"homepage":"https://thelounge.chat","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astorije.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-23T13:46:58.000Z","updated_at":"2023-09-06T00:26:57.000Z","dependencies_parsed_at":"2022-07-11T11:34:22.000Z","dependency_job_id":null,"html_url":"https://github.com/astorije/ansible-thelounge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astorije%2Fansible-thelounge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astorije%2Fansible-thelounge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astorije%2Fansible-thelounge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astorije%2Fansible-thelounge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astorije","download_url":"https://codeload.github.com/astorije/ansible-thelounge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240298487,"owners_count":19779283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-role","irc","irc-client","thelounge"],"created_at":"2024-07-29T19:14:25.297Z","updated_at":"2025-02-27T17:30:26.057Z","avatar_url":"https://github.com/astorije.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/astorije/ansible-thelounge.svg?branch=master)](https://travis-ci.org/astorije/ansible-thelounge)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n# Ansible role for The Lounge\n\nAnsible role to install [The Lounge](https://thelounge.chat/), a self-hosted web IRC\nclient.\n\nWhat this role does:\n\n- Installs [Supervisor](http://supervisord.org/) to run The Lounge in the background\n- Installs [NodeSource's Node.js 8.x LTS](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)\n- Installs [Yarn](https://yarnpkg.com/en/)\n- Installs [The Lounge v3.0.1](https://github.com/thelounge/thelounge/blob/master/CHANGELOG.md)\n- Creates a system user to own the `thelounge` process\n- Configures The Lounge [as a private server](https://thelounge.chat/docs/server/configuration.html#public) to enable user login\n- Enables prefetch storage and file upload\n- Configures users as defined in your playbook variables, each with logging support\n- Starts The Lounge server as a [Supervisor](http://supervisord.org/) program\n\nNote that this playbook will also install\n[esprima](https://www.npmjs.com/package/esprima) and\n[jsonlint](https://www.npmjs.com/package/jsonlint) npm packages to check syntax\nof configuration files.\n\nConfiguration files for The Lounge and its users can be found at\n`/etc/thelounge/`.\n\n## Requirements\n\nThis role should be compatible with Ansible 2.6 or higher.\n\nIt was written for Debian and Ubuntu distributions.\n\n## Role variables\n\n### `thelounge_debug`\n\nSets debug mode for available keys (`irc_framework` and `raw`).\n\nAll keys of this variable default to `false`.\n\n#### Example\n\n```yaml\nthelounge_debug:\n  irc_framework: true\n  raw: true\n```\n\n### `thelounge_port`\n\nSets the port that `thelounge` is listening on.\n\nThis variable defaults to `9000`.\n\n### `thelounge_prefetch`\n\nEnables or disables link and image prefetching for clients of this instance.\n\nThis variable defaults to `false` (change it to `true` for a better experience).\n\n### `thelounge_reverse_proxy`\n\nSets whether the server is behind a reverse proxy and should honor the\n`X-Forwarded-For` header or not.\n\nThis variable defaults to `false` (change it to `true` if The Lounge is running\nNginx, etc.).\n\n### `thelounge_theme`\n\nSets the visual style to apply to The Lounge, among those offered with the\nsoftware.\n\nThis variable defaults to `example`.\n\n#### Example\n\n```yaml\n# Options are: crypto, example (default), morning, zenburn\nthelounge_theme: morning\n```\n\n### `thelounge_users`\n\nLists all users allowed to access The Lounge using their credentials.\n\nBy default, no users are created.\n\n**Warning:** At the moment, user configuration files are only created if they do\nnot exist, so changing passwords does not get reflected when provisioning. Use\nthe web interface (since v1.3.0) or the `thelounge reset` command to change\npasswords.\n\n#### Example\n\n```yaml\nthelounge_users:\n  - user: WiZ\n    hashed_password: $2a$04$g8xA7UYVGXwtMp1fJIyINerlXjzieA/lva9O3rUWV2KEpLTjhdVD6 # \"password\"\n  - ...\n```\n\nPasswords are hashed using [`bcrypt`](https://en.wikipedia.org/wiki/Bcrypt). To\ngenerate a password using the [bcryptjs](https://www.npmjs.com/package/bcryptjs)\nnpm package, run the following commands:\n\n```bash\nyarn add bcryptjs\n node node_modules/bcryptjs/bin/bcrypt \"my password\"\n```\n\n(Note that the `bcrypt` command is prefixed with a whitespace to\n[not be saved in your `bash` history](http://askubuntu.com/a/15929/166928),\nif configured accordingly).\n\n### `thelounge_version`\n\nInstalls a specific version of The Lounge. It must be one of [the official\nreleases](https://github.com/thelounge/thelounge/releases).\n\nThis variable defaults to the stable version mentioned at the top of this\ndocument.\n\n#### Example\n\n```yaml\nthelounge_version: \"3.0.0-pre.1\"\n```\n\n## Example playbook\n\nGo to the [test playbook](tests/test.yml) to see an example playbook using this\nrole.\n\n## Development environment\n\nInstall [Vagrant](https://www.vagrantup.com/) and\n[VirtualBox](https://www.virtualbox.org/) using your favorite package manager\nand run:\n\n```bash\nvagrant up\n```\n\nThis will spin up a minimal virtual machine and provision it with a test\nplaybook using that role.\n\nIf that step succeeds, syntax of the role is correct and all tasks are\nsuccessful on a bare machine. It does not test the specifics of the role\nhowever, that you need to check yourself by connecting to the VM:\n\n```bash\nvagrant ssh\n```\n\nTo provision the virtual machine again, run the following:\n\n```bash\nvagrant up # Unnecessary if the VM is already running\nvagrant provision\n```\n\nYou should then be able to access The Lounge at \u003chttp://localhost:9000/\u003e, and\nconnect with the following test credentials:\n  - Username: **WiZ**\n  - Password: **password**\n\nYou can also run the tests against the VM with:\n\n```bash\n./tests/tests.sh\n```\n\nLastly, once you are done with changes, you can run one of the following:\n\n```bash\nvagrant halt -f # Shuts down the VM for later re-use\nvagrant destroy -f # Destroys the VM entirely\n```\n\nThis role is\n[backed by Travis CI](https://travis-ci.org/astorije/ansible-lounge).\nIt uses the same test playbook to ensure that, for every push:\n\n- Syntax is correct\n- The role and playbook run fine\n- The role is idempotent (running it twice in a row results in un-changed states\n  only)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastorije%2Fansible-thelounge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastorije%2Fansible-thelounge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastorije%2Fansible-thelounge/lists"}