{"id":18708857,"url":"https://github.com/igorkulman/thinkserver","last_synced_at":"2026-03-03T03:06:24.863Z","repository":{"id":43169473,"uuid":"511077685","full_name":"igorkulman/thinkserver","owner":"igorkulman","description":"Configuration for my home server running on an old Thinkpad T440s","archived":false,"fork":false,"pushed_at":"2024-09-06T09:42:16.000Z","size":6720,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T05:41:52.249Z","etag":null,"topics":["homelab","homelab-setup","homeserver","thinkpad"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igorkulman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-07-06T09:44:52.000Z","updated_at":"2025-02-19T06:53:18.000Z","dependencies_parsed_at":"2024-11-07T12:31:48.448Z","dependency_job_id":"19a96830-df5f-4b64-bc1a-d1265e1f0568","html_url":"https://github.com/igorkulman/thinkserver","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/igorkulman%2Fthinkserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2Fthinkserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2Fthinkserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorkulman%2Fthinkserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igorkulman","download_url":"https://codeload.github.com/igorkulman/thinkserver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248553806,"owners_count":21123521,"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":["homelab","homelab-setup","homeserver","thinkpad"],"created_at":"2024-11-07T12:25:28.969Z","updated_at":"2026-03-03T03:06:24.846Z","avatar_url":"https://github.com/igorkulman.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ThinkServer\n\nI was not able to buy a Raspberry Pi 4 so I am now using my old Lenovo ThinkPad T440s as my home server replacing the old Raspberry Pi 2 that became too slow for my current needs.\n\n![Dashboard](homepage.png)\n\n## Main goal\n\nMain goals of my home server are network wide ad blocking and a media server with automated movies and TV shows downloads accessible also from the outside thanks to Tailscale.\n\n## Software\n\n- [Plex Media Server](https://www.plex.tv/)\n- [Sonarr](https://sonarr.tv/)\n- [Radarr](https://radarr.video/)\n- [Bazarr](https://www.bazarr.media/)\n- [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr)\n- [Transmission](https://transmissionbt.com/)\n- [AdGuardHome](https://github.com/AdguardTeam/AdGuardHome)\n- [Homer](https://github.com/bastienwirtz/homer/)\n- [Home Assistant](https://www.home-assistant.io/)\n- [Prowlarr](https://prowlarr.com/)\n- [Shinkro](https://github.com/varoOP/shinkro)\n- [Uptime Kuma](https://github.com/louislam/uptime-kuma)\n- [Watchtower](https://containrrr.dev/watchtower/)\n- [Unifi Controller](https://www.ui.com/software)\n- [Immich](https://immich.app)\n- [Miniflux](https://miniflux.app/)\n- [Gitea](https://about.gitea.com/)\n- [Tailscale](https://tailscale.com/)\n\n### Docker\n\nMost of the software runs in Docker for easier management. See [docker-compose.yml](https://github.com/igorkulman/thinkserver/blob/main/docker-compose.yml) for exact configuration.\n\n```bash\nmkdir docker-services\ncd docker-services\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/docker-compose.yml\ndocker-compose up -d\n```\n\n#### Docker DNS\n\nI encountered problems where Docker containers were not able to access DNS, probably because of AdGuardHome. I fixed it by setting Docker DNS to directly use Cloudflare and Google DNS.\n\n```bash\nsudo nano /var/snap/docker/current/config/daemon.json # because Ubuntu Server\n```\n\n```json\n{ \"dns\" : [ \"1.1.1.1\" , \"8.8.8.8\" ] }\n```\n\n```bash\nsudo snap restart docker\n```\n\n### Direct installation\n\nTailscale needs to be installed directly\n\n```bash\ncurl -fsSL https://tailscale.com/install.sh | sh\nsudo tailscale up --advertise-exit-node --accept-dns=false\n```\n\n#### Plex over Tailscale\n\nTo be able to use Plex over Tailscale I had to add its Tailscale address (http://100.x.y.z:32400) to `Settings` | `Network` | `Custom server access URLs` (only visible after showing advanced settings).\n\n## Reduce power consumption\n\n### Remove external battery\n\nThe Thinkpad T440s includes a smaller internal battery and a bigger removable external battery. I removed the external battery to prolong its lifespan and reduce the heat generated charging it.\n\n### Disable sleep on lid close\n\n```bash\nsudo nano /etc/systemd/logind.conf\n```\n\nset `HandleLidSwitch=ignore`, `LidSwitchIgnoreInhibited=no` and\n\n```bash\nsudo service systemd-logind restart\n```\n\n### Turn off display when lid closed\n\nBased on https://askubuntu.com/a/1117586\n\n```bash\nsudo apt-get install acpi-support vbetool\nsudo echo \"event=button/lid.*\" \u003e /etc/acpi/events/lid-button\nsudo echo \"action=/etc/acpi/lid.sh\" \u003e\u003e /etc/acpi/events/lid-button\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/lid.sh\nchmod +x lid.sh\nsudo cp lid.sh /etc/acpi/lid.sh\n```\n\n### Disable Turbo Boost\n\nBased on https://askubuntu.com/a/619881\n\n```bash\nsudo apt-get install msr-tools\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/turbo-boost.sh\nchmod +x turbo-boost.sh\n./turbo-boost.sh disable\n```\n\n### Disable unused hardware\n\n```bash\nsudo modprobe -r iwlwifi # Wi-Fi\nsudo modprobe -r btusb # Bluetooth\nsudo modprobe -r snd_hda_intel # Sound\n```\n\n### PowerTOP\n\nBased on https://rhea.dev/articles/2017-07/Home-server-Power-saving\n\n```bash\nsudo apt-get install powertop\nsudo powertop --calibrate\n```\n\n```bash\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/powertop.service\nsudo cp powertop.service /lib/systemd/system/powertop.service\nsudo systemctl enable --now powertop\n```\n\n### Disable the red LED\n\nDisabling the red power LED on the lid is not really a power saving features, it is more an annoyance to remove, especially when the Thinkpad is placed in some visible place.\n\n```bash\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/led-off.sh\nchmod +x led-off.sh\n./led-off.sh\n```\n\n### Power consumption measurements\n\nIn idle all the docker containers are running but just AdGuardHome responds to DNS queries from my network, the other containers do not really do anything.\n\n| State \t\t\t\t\t\t\t| Power usage \t\t|\n| ---- \t\t\t\t\t\t\t\t| ----------------- |\n| Idle \t\t\t\t\t\t\t\t|              \t5 W |\n| Plex (playback) \t\t\t\t\t|               8 W |\n| Plex (playback with transcoding)  |              17 W |\n\nAll the measurements were done with [Solight DT26](https://www.solight.cz/en/detailsklk.aspx?sklk_id=1RS1000201).\n\n## Network shares\n\n### Samba\n\n```bash\nwget https://raw.githubusercontent.com/igorkulman/thinkserver/main/shares.conf\nsudo nano /etc/samba/smb.conf\n```\nadd\n\n```\ninclude = /home/igorkulman/shares.conf\n```\n\nand restart Samba\n\n```bash\nsudo service smbd restart\n```\n\n### NFS\n\nNFS is faster than Samba so I prefer it for accessing the data from macOS machines.\n\n```bash\nsudo apt install nfs-kernel-server\nsudo nano /etc/exports\n```\n\nadd\n\n```\n/media/data/downloads *(rw,sync,no_subtree_check,root_squash,insecure)\n/media/data/backup *(rw,sync,no_subtree_check,root_squash,insecure)\n/media/data/Movies *(rw,sync,no_subtree_check,root_squash,insecure)\n/media/data/TVShows *(rw,sync,no_subtree_check,root_squash,insecure)\n```\n\nand reload NFS\n\n```bash\nsudo exportfs -a\nsudo systemctl restart nfs-kernel-server\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkulman%2Fthinkserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorkulman%2Fthinkserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorkulman%2Fthinkserver/lists"}