{"id":15691567,"url":"https://github.com/stramel/htpc","last_synced_at":"2025-05-08T01:08:42.949Z","repository":{"id":142548879,"uuid":"54288644","full_name":"stramel/htpc","owner":"stramel","description":"Media Server Compose","archived":false,"fork":false,"pushed_at":"2017-03-26T20:51:07.000Z","size":61,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-08T01:07:36.693Z","etag":null,"topics":["couchpotato","deluge","docker","docker-compose","htpc","mergerfs","plex","plex-requests","samba","sickrage","snapraid","sonarr"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stramel.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-19T21:48:50.000Z","updated_at":"2023-09-08T17:08:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"df58f121-1852-4bf7-9a5e-996c2dbb6e42","html_url":"https://github.com/stramel/htpc","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/stramel%2Fhtpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stramel%2Fhtpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stramel%2Fhtpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stramel%2Fhtpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stramel","download_url":"https://codeload.github.com/stramel/htpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252978757,"owners_count":21834915,"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":["couchpotato","deluge","docker","docker-compose","htpc","mergerfs","plex","plex-requests","samba","sickrage","snapraid","sonarr"],"created_at":"2024-10-03T18:22:20.411Z","updated_at":"2025-05-08T01:08:42.930Z","avatar_url":"https://github.com/stramel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# htpc\nMedia Server Compose\n\n\nTasks are roughly based on https://github.com/IronicBadger/ansible\n\n### MergerFS\n\nhttps://github.com/trapexit/backup-and-recovery-howtos/\n\n- Install MergerFS\n  - `$ mkdir mergerfs;cd mergerfs`\n  - `$ wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/mergerfs/files/build-container`\n  - `$ wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/mergerfs/files/Docerfile`\n  - `$ sudo chmod +x build-container`\n  - `$ sudo ./build-container`\n  - `$ sudo dpkg -i artifact/mergerfs-from-source.deb`\n  - `$ cd ../;sudo rm -rf mergerfs`\n- Format the drives\n  - `$ sudo mkfs.ext4 -m 0 -T largefile /dev/sd{b,c,d,e,f}`\n- Create mount locations\n  - `$ sudo mkdir /mnt/disk{0,1,2,3,4}`\n  - `$ sudo mkdir /mnt/parity0`\n  - `$ sudo mkdir /mnt/storage`\n- Add to fstab **USE CAUTION WITH THIS STEP**\n  - `$ sudo blkid`\n  - `$ sudo vim /etc/fstab`\n\n    ```\n    # \u003cfile system\u003e  \u003cmount point\u003e      \u003ctype\u003e  \u003coptions\u003e                              \u003cdump\u003e  \u003cpass\u003e\n    /dev/sdb         /mnt/parity0        auto    defaults,nobootwait,errors=remount-ro  0       2\n    /dev/sd{c,d,e}   /mnt/disk{0,1,2,3}  auto    defaults,nobootwait,errors=remount-ro  0       2\n    ```\n- Add to fstab **USE CAUTION WITH THIS STEP**\n  - `$ sudo vim /etc/fstab`\n  - `$ /mnt/disk* /mnt/storage fuse.mergerfs defaults,allow_other,direct_io,moveonenospc=true 0 0`\n\n\n### SnapRAID\n\n- Install SnapRAID\n  - `$ mkdir snapraid;cd snapraid`\n  - `$ wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/snapraid/files/build-container`\n  - `$ wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/snapraid/files/Docerfile`\n  - `$ sudo chmod +x build-container`\n  - `$ sudo ./build-container`\n  - `$ sudo dpkg -i artifact/snapraid-from-source.deb`\n  - `$ cd ../;sudo rm -rf snapraid`\n- Download snapraid-runner\n  - `$ cd /opt/`\n  - `$ sudo git clone https://github.com/Chronial/snapraid-runner.git`\n- Add snapraid config\n  - `$ cd /etc/`\n  - `$ sudo wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/epsilon/files/etc/snapraid.conf`\n  - Modify to fit build\n- Setup snapraid-runner config\n  - `$ cd /opt/snapraid-runner`\n  - `$ sudo wget https://raw.githubusercontent.com/IronicBadger/ansible/master/roles/epsilon/templates/opt/snapraid-runner.j2 -O snapraid-runner.conf`\n  - Modify to fit build\n- Add snapraid-runner to cron\n  - `$ crontab -e`\n  - Add `00 03 * * * python2 /opt/snapraid-runner/snapraid-runner.py -c /opt/snapraid-runner/snapraid-runner.conf`\n- Sync SnapRAID\n  - `$ sudo snapraid sync`\n\n### Docker Tasks\n\nhttps://gist.github.com/wdullaer/f1af16bd7e970389bad3\ndocker-compose \u003e 1.4.0\n\n- Update System\n  - `$ sudo apt-get update`\n  - `$ sudo apt-get upgrade`\n- Install docker and docker-compose (https://docs.docker.com/v1.8/installation/ubuntulinux/)\n  - `$ sudo apt-get install docker-engine docker-compose`\n- Create docker group and add current user to it\n  - `$ sudo usermod -aG docker $USER`\n- Pull docker-compose file\n  - `$ git clone https://github.com/stramel/htpc.git`\n- Create group for docker appdata\n  - `$ sudo groupadd -g 1050 dockergroup`\n- Create user for docker appdata\n  - `$ sudo useradd -u 1050 -g 1050 -d /dev/null -s /sbin/nologin dockeruser`\n- Create docker appdata base directory\n  - `$ sudo mkdir -p /opt/appdata`\n  - `$ sudo chown -R dockeruser:dockergroup /opt/appdata`\n- Set environment variables for docker containers\n  - `$ sudo vim /etc/environment`\n  - Add the following lines:\n    - `PUID=\"1050\"`\n    - `PGID=\"1050\"`\n- Copy docker-compose to config directory\n  - `$ sudo cp htpc/docker-compose.yml /opt/docker-compose.yml`\n- Use docker-compose to bring up apps\n  - `$ docker-compose -f /opt/docker-compose.yml up -d`\n\n\n### File Sharing Tasks\n\n- Update System\n  - `$ sudo apt-get update`\n  - `$ sudo apt-get upgrade`\n\n\n- Install Samba\n  - `$ sudo apt-get install samba`\n- Start Samba service\n  - `$ sudo service smbd start`\n- Setup Samba config\n  -\n\n\n- Install NFS\n  - `$ sudo apt-get install nfs-kernel-server`\n- Start NFS service\n  - `$ sudo service nfs-kernel-server start`\n- Setup NFS config\n  -\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstramel%2Fhtpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstramel%2Fhtpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstramel%2Fhtpc/lists"}