{"id":21945041,"url":"https://github.com/gurkengewuerz/nitro-docker","last_synced_at":"2025-04-22T21:11:12.940Z","repository":{"id":143577502,"uuid":"613501772","full_name":"Gurkengewuerz/nitro-docker","owner":"Gurkengewuerz","description":"Nitro Docker installation using Arcturus Community Emulator","archived":false,"fork":false,"pushed_at":"2023-10-30T16:06:04.000Z","size":962,"stargazers_count":6,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T18:51:15.399Z","etag":null,"topics":["arcturus","arcturus-emulator","arcturus-plugins","docker","habbo","habbohotel","habboretro","nitro","retro"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gurkengewuerz.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,"governance":null}},"created_at":"2023-03-13T17:37:16.000Z","updated_at":"2024-07-24T17:29:18.000Z","dependencies_parsed_at":"2023-10-29T19:20:13.291Z","dependency_job_id":null,"html_url":"https://github.com/Gurkengewuerz/nitro-docker","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/Gurkengewuerz%2Fnitro-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gurkengewuerz%2Fnitro-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gurkengewuerz%2Fnitro-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gurkengewuerz%2Fnitro-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gurkengewuerz","download_url":"https://codeload.github.com/Gurkengewuerz/nitro-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250324697,"owners_count":21411946,"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":["arcturus","arcturus-emulator","arcturus-plugins","docker","habbo","habbohotel","habboretro","nitro","retro"],"created_at":"2024-11-29T04:17:39.078Z","updated_at":"2025-04-22T21:11:12.920Z","avatar_url":"https://github.com/Gurkengewuerz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nitro Docker installation\nNitro docker is a quick-to-setup docker environment for the [nitro client](https://github.com/billsonnn/nitro-react) with [Arcturus Community Emulator](https://git.krews.org/morningstar/Arcturus-Community). It can be run on Windows, Linux or OSX just with a few commands. It is inspired by [Holo5/nitro-docker](https://github.com/Holo5/nitro-docker).  \nThe default configuration can run on localhost.\n\n**This Repository uses `ms4/dev` branch!**\n**This Repository uses a [forked version](https://github.com/Gurkengewuerz/nitro) of Nitro with bug-fixes and more features!**\n\n## Requirements\n- Install docker desktop (and for windows, enable WSL support) [from here](https://www.docker.com/get-started/).\n- Node.js LTS or higher (For the habbo-downloader)\n- Clone this repository\n\n## Notes\nThis setup installs a complete local setup. Connecting externally requires editing the configurations. Serach for the following ports and edit them. Down below is a recommended domain setup when using reverse proxies like traefik.\n\n| Server                | Local Setup           | Recommended Domain Setup |\n|-----------------------|-----------------------|--------------------------|\n| MorningStar WebSocket | ws://127.0.0.1:2096   | game.example.com         |\n| Assets Server         | http://127.0.0.1:8080 | assets.example.com       |\n| CMS                   | http://127.0.0.1:8081 | example.com              |\n| Nitro Client          | http://127.0.0.1:3080 | game.example.com         |\n\n```sql\nUPDATE emulator_settings SET `value`='*.example.com' WHERE  `key`='websockets.whitelist';\n```\n\n## Build\n0. copy necessary files to work locally\nThe following command searches for all files starting with `example-`, copies the file and remove the `example-` prefix. If you don't have access to the find command, you can do it manually.\n\n```bash\nfind . -type f -name 'example-*' -exec sh -c 'cp -rf \"$0\" \"${0/example-/}\"' {} \\;\n```\n\n1. Download the default assets\n\n\u003e The `\u0026\u0026 \\` is used to combine multiple commands into a single line in a Unix-like command shell. By using \u0026\u0026 \\, the two commands are executed sequentially and only if the first command succeeds. If the first command fails, the second command will not be executed, saving you from potential errors.\n\n```bash\ngit clone https://github.com/Gurkengewuerz/nitro-docker.git \u0026\u0026 \\\ncd nitro-docker/ \u0026\u0026 \\\ngit clone https://git.krews.org/morningstar/arcturus-morningstar-default-swf-pack.git assets/swf/ \u0026\u0026 \\\ngit clone https://github.com/krewsarchive/default-assets.git assets/assets/ \u0026\u0026 \\\nwget https://github.com/billsonnn/nitro-react/files/10334858/room.nitro.zip \u0026\u0026 \\\nunzip -o room.nitro.zip -d assets/assets/bundled/generic \u0026\u0026 \\\ndocker compose up db -d\n```\n⚠ **The database port is exposed to `3010` by default** ⚠\n\n\n2. Configure the `.env` to your needs\n\n3. Download SQL updates: \nhttps://git.krews.org/morningstar/Arcturus-Community/-/archive/ms4/dev/Arcturus-Community-ms4-dev.zip?path=sqlupdates\n\n4. Manually initialize database with HeidiSQL.\n- Download `HeidiSQL` from: https://www.heidisql.com/download.php\n- Open `HeidiSQL.exe` and connect to the nitro-docker-db container\n\n```text\n# **Default login credentials using HeidySQL:**\n# Network type: MariaDB or MySQL (TCP/IP)\n# Library: libmysql.dll\n# Hostname /IP: YOURSERVERIPHERE!!\n# User: arcturus_user\n# Password: arcturus_pw\n# Port: 3310\n# Databases: Separated by semicolon\n```\n\n- Select **arcturus**\n\n- Go to **File** --\u003e **Run SQL file...**  and open **arcturus_3.0.0-stable_base_database--compact.sql** Located at: nitro-docker/arcturus/arcturus_3.0.0-stable_base_database--compact.sql\n\n- For the popup: Really auto-detect file encoding? click on **Yes**\n\n- Go to **File** --\u003e **Run SQL file...**  and open **3_0_0 to 3_5_0.sql** Located at: \\Arcturus-Community-ms4-dev-sqlupdates\\sqlupdates\n\n- Go to **File** --\u003e **Run SQL file...**  and open **3_5_0 to 4_0_0.sql**\n\n- Go to **File** --\u003e **Run SQL file...**  and open **4_0_0_pets_EN.sql**\n\n- Go to **File** --\u003e **Run SQL file...**  and open **4_0_0_permissions.sql**\n\nIf you set-up a clean database you also wan't to create new permission groups. This is the new permission structure by Arcturus.\n- Go to **File** --\u003e **Run SQL file...**  and open **perms_groups.sql** Located at: ./arcturus\n\n\n5. Update emulator settings with HeidiSQL\n\n- Select `Query` then copy paste the follwing queries:\n\n```sql\n-- requirements for the camera mod\nUPDATE emulator_settings SET `value`='http://127.0.0.1:8080/usercontent/camera/' WHERE  `key`='camera.url';\nUPDATE emulator_settings SET `value`='/app/assets/usercontent/camera/' WHERE  `key`='imager.location.output.camera';\nUPDATE emulator_settings SET `value`='/app/assets/usercontent/camera/thumbnail/' WHERE  `key`='imager.location.output.thumbnail';\n\n-- because we have no image.php proxy which is set by default to proxy youtube images we do a microservice aproach by proxy data through a go service\nUPDATE emulator_settings SET `value`='http://127.0.0.1:8080/api/imageproxy/0x0/http://img.youtube.com/vi/%video%/default.jpg' WHERE  `key`='imager.url.youtube';\n\n-- This will Disable console mode for Arcturus because we are using docker.\nUPDATE emulator_settings SET `value`='0' WHERE `key`='console.mode';\n\n-- badges are dynamically generated by Nitro. This setting is only useful if a) you have group_badge.nitro and swf/c_images/Badgeparts/ in sync b) you wan't to hide the the error message\nUPDATE emulator_settings SET `value`='/app/assets/usercontent/badgeparts/generated/' WHERE  `key`='imager.location.output.badges';\nUPDATE emulator_settings SET `value`='/app/assets/swf/c_images/Badgeparts' WHERE  `key`='imager.location.badgeparts';\n\n```\n\n- Press `F9` on your keyboard to run the queries\n\n6. Start Asset Server, Build assets locally, Arcturus Community Emulator and Nitro\n\n```bash\ndocker compose up assets -d \u0026\u0026 \\\ndocker compose up assets-build --build \u0026\u0026 \\\ndocker compose up imgproxy --build -d \u0026\u0026 \\\ndocker compose up arcturus --build -d\n```\n\n7. Update the: `nitro/renderer-config.json` and `nitro/ui-config.json` values to your setup. If the deployment is buggy or throws any errors check the json files for updates. then Build and Start Nitro\n\n```bash\ndocker compose up nitro --build -d\n```\n\n\u003e habbo-downloader requires **Node.js 15.0** or higher you can install the newest version with the following command:\n\n```bash\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash \u0026\u0026 \\\nnvm install node\n```\n\n\u003e Next setup reverse proxies for your nginx or traefik server. You should disable proxy side caching.\n\n\n## Update to latest production\n\n8. Update a few assets since we want the most up to date assets as possible. You can remove habbo-downloader lines if needed or you can just download everything.\n\n```text\n# Replace `--domain de with` your own country code\n# For example if you want Dutch then do `--domain nl`\n# **Here is a list of supported country codes:**\n# Portugese `--domain com.br`\n# Turkish `--domain com.tr`\n# English `--domain com`\n# German `--domain de`\n# Spanish `--domain es`\n# Finnish `--domain fi`\n# French `--domain fr`\n# Italian `--domain it`\n# Dutch `--domain nl`\n```\n\n```bash\napt install npm -y \u0026\u0026 \\\nnpm i -g habbo-downloader \u0026\u0026 \\\nrm -rf assets/swf/gordon/PRODUCTION \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command badgeparts \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command badges \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command clothes \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command effects \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command furnitures \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command gamedata \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command gordon \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command hotelview \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command icons \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command mp3 \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command pets \u0026\u0026 \\\nhabbo-downloader --output ./assets/swf --domain com --command promo \u0026\u0026 \\\ncp -n assets/swf/dcr/hof_furni/icons/* assets/swf/dcr/hof_furni \u0026\u0026 \\\nmv assets/swf/gordon/PRODUCTION* assets/swf/gordon/PRODUCTION \u0026\u0026 \\\ndocker compose up assets-build --build\n```\n\n\n## Update Languages\n\n```bash\nhabbo-downloader --output ./assets/translation --domain com --command gamedata \u0026\u0026 \\\ncd ./assets/translation \u0026\u0026 \\\ncp -rf gamedata/external*.txt ../swf/gamedata/ \u0026\u0026 \\\ncd ../.. \u0026\u0026 \\\ndocker compose up assets-build --build \u0026\u0026 \\\ncd ./assets/translation \u0026\u0026 \\\npython FurnitureDataTranslator.py \u0026\u0026 \\\npython SQLGenerator.py \u0026\u0026 \\\npython external_text.py --domain com\n```\n\n* run SQL file\n* maybe run other `./assets/translation/*.sql` files which are fixes for Arcturus catalog like to display Song names/preview, fixing crackables or known wrong item bases.\n\n```bash\ndocker compose restart arcturus\n```\n\n## AtomCMS\n\n1. change [`.cms.env`](/.cms.env) to your needs\n\n2. Check your permissions table. Use [**perms_groups.sql**](/arcturus/perms_groups.sql) if unclear. AtomCMS is not using the new permission layout so we are legacy supporting it by \"copy\" the most important values.\n\n4. Start the CMS\n```bash\ndocker compose up cms --build -d\n```\n\n5. Generate a new secret APP_KEY\n```bash\ndocker compose exec cms php artisan key:generate\n```\n\n6. Open the CMS in the browser by default [`127.0.0.1:8081`](http://127.0.0.1:8081/) and do the basic setup.\n\n7. Update automcms settings with HeidiSQL\n\n```sql\nUPDATE website_settings SET `value` = 'http://127.0.0.1:8080/api/imager/?figure=' WHERE  `key` = 'avatar_imager';\nUPDATE website_settings SET `value` = 'http://127.0.0.1:8080/swf/c_images/album1584' WHERE  `key` = 'badges_path';\nUPDATE website_settings SET `value` = 'http://127.0.0.1:8080/usercontent/badgeparts/generated' WHERE  `key` = 'group_badge_path';\nUPDATE website_settings SET `value` = 'http://127.0.0.1:8080/swf/dcr/hof_furni' WHERE  `key` = 'furniture_icons_path';\n\nUPDATE website_settings SET `value` = 'arcturus' WHERE  `key` = 'rcon_ip';\nUPDATE website_settings SET `value` = '3001' WHERE  `key` = 'rcon_port';\n\n-- check values - these values are for the perms_groups.sql\nUPDATE website_settings SET `value` = '4' WHERE  `key` = 'min_staff_rank';\nUPDATE website_settings SET `value` = '5' WHERE  `key` = 'min_maintenance_login_rank';\nUPDATE website_settings SET `value` = '6' WHERE  `key` = 'min_housekeeping_rank';\n```\n\n**ℹ Notice**: badgeparts generator must be set up in arcturus and all files must be synced with the badge_parts.nitro\n\n## Create an archive/backup\n\n### Export running containers\n```bash\nbash ./export_containers.sh\n```\n\n### Create manual database backup\n```bash\ndocker compose exec backup backup-now\n```\n\n### Save all data\n```bash\n7z a -mx=9 nitro-$(date -d \"today\" +\"%Y%m%d_%H%M\").7z ./ '-x!db/data' '-x!.git/' '-x!logs/' '-x!cache/'\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurkengewuerz%2Fnitro-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgurkengewuerz%2Fnitro-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurkengewuerz%2Fnitro-docker/lists"}