|
1 | 1 | # Home Network Server |
2 | 2 |
|
3 | | -A self-hosted home network server setup running on Ubuntu Server, managed entirely through Docker Compose. |
| 3 | +[](https://www.docker.com/) |
| 4 | +[](https://docs.docker.com/compose/) |
| 5 | +[](https://nodejs.org/) |
| 6 | +[](https://pnpm.io/) |
| 7 | +[](LICENSE) |
| 8 | + |
| 9 | +A self-hosted home network server setup running on Ubuntu Server, managed entirely through Docker Compose. This project provides a complete home network infrastructure with DNS, ad-blocking, service dashboard, reverse proxy, and secure remote access capabilities. |
4 | 10 |
|
5 | 11 | ## Overview |
6 | 12 |
|
7 | 13 | This project provides a complete home network infrastructure including: |
8 | 14 |
|
9 | 15 | - **Pi-hole** - Network-wide DNS and ad-blocking |
10 | 16 | - **Homepage** - Service dashboard and navigation hub |
11 | | -- **Traefik** - Reverse proxy for easy service access |
12 | | -- **Additional Services** - Jellyfin, Syncthing, and more |
| 17 | +- **Traefik** - Reverse proxy for easy service access (planned) |
| 18 | +- **Tailscale** - Secure remote access VPN (planned) |
| 19 | +- **Additional Services** - Jellyfin, Syncthing, Code-Server, and more (planned) |
13 | 20 |
|
14 | 21 | All services are accessible from devices across the network (Linux, Android, TVs, Mac, iPhone, iPad, etc.). |
15 | 22 |
|
16 | | -## Planning |
| 23 | +## Services |
17 | 24 |
|
18 | | -See [PLANNING.md](./PLANNING.md) for the complete implementation plan, including: |
| 25 | +### Currently Implemented |
19 | 26 |
|
20 | | -- Phased rollout strategy |
21 | | -- Architecture overview |
22 | | -- Security considerations |
23 | | -- CI/CD practices |
24 | | -- Network configuration details |
| 27 | +- **Pi-hole** - Network-wide DNS and ad-blocking service |
| 28 | +- **Homepage** - Service dashboard and navigation hub |
25 | 29 |
|
26 | | -## Quick Start |
| 30 | +### Planned Services |
27 | 31 |
|
28 | | -1. Clone this repository |
29 | | -2. Run the setup script: |
30 | | - ```bash |
31 | | - ./setup.sh |
32 | | - ``` |
33 | | -3. Edit `.env` file with your settings |
34 | | -4. Start services: |
35 | | - ```bash |
36 | | - docker compose up -d |
37 | | - ``` |
| 32 | +- **Traefik** - Reverse proxy with automatic SSL/TLS |
| 33 | +- **Tailscale** - Secure remote access VPN |
| 34 | +- **Jellyfin** - Media streaming server |
| 35 | +- **Syncthing** - File synchronization |
| 36 | +- **Code-Server** - VSCode in browser for remote development |
38 | 37 |
|
39 | | -## Current Status |
| 38 | +For detailed progress information and implementation status, see [PLANNING.md](./PLANNING.md). |
40 | 39 |
|
41 | | -✅ **Phase 1: Pi-hole MVP** - Ready for deployment |
| 40 | +## Prerequisites |
42 | 41 |
|
43 | | -See [PLANNING.md](./PLANNING.md) for the complete implementation roadmap. |
| 42 | +Before setting up the home network server, ensure you have the following installed: |
44 | 43 |
|
45 | | -## Services |
| 44 | +- **Docker** - Container runtime ([Install Docker](https://docs.docker.com/get-docker/)) |
| 45 | +- **Docker Compose** - Container orchestration ([Install Docker Compose](https://docs.docker.com/compose/install/)) |
| 46 | +- **Node.js** - Version 20.0.0 or higher ([Install Node.js](https://nodejs.org/)) |
| 47 | +- **pnpm** - Version 8.15.4 ([Install pnpm](https://pnpm.io/installation)) |
46 | 48 |
|
47 | | -### Pi-hole |
| 49 | +### Verify Prerequisites |
48 | 50 |
|
49 | | -Network-wide DNS and ad-blocking service. |
| 51 | +```bash |
| 52 | +# Check Docker |
| 53 | +docker --version |
50 | 54 |
|
51 | | -**Quick Setup:** |
| 55 | +# Check Docker Compose |
| 56 | +docker compose version |
52 | 57 |
|
53 | | -1. Run `./setup.sh` (auto-detects server IP) |
54 | | -2. Configure router DHCP DNS to use your server IP |
55 | | -3. Start: `docker compose up -d` |
56 | | -4. Access: `http://YOUR_SERVER_IP/admin` |
| 58 | +# Check Node.js |
| 59 | +node --version # Should be >= 20.0.0 |
57 | 60 |
|
58 | | -**Documentation:** |
| 61 | +# Check pnpm |
| 62 | +pnpm --version # Should be 8.15.4 |
| 63 | +``` |
59 | 64 |
|
60 | | -- [Pi-hole Setup & Configuration](./docs/pihole-setup.md) |
61 | | -- [Pi-hole Troubleshooting](./docs/pihole-troubleshooting.md) |
| 65 | +## Installation & Setup |
62 | 66 |
|
63 | | -**Scripts:** |
| 67 | +### 1. Clone the Repository |
64 | 68 |
|
65 | | -- `scripts/pihole/test-pihole.sh` - Test Pi-hole functionality |
66 | | -- `scripts/pihole/diagnose-pihole.sh` - Network diagnostic tool |
67 | | -- `scripts/pihole/update-server-ip.sh` - Update server IP in .env |
| 69 | +```bash |
| 70 | +git clone <repository-url> |
| 71 | +cd home-network |
| 72 | +``` |
| 73 | + |
| 74 | +### 2. Install Development Dependencies |
| 75 | + |
| 76 | +```bash |
| 77 | +pnpm install |
| 78 | +``` |
| 79 | + |
| 80 | +### 3. Run Setup Script |
| 81 | + |
| 82 | +The setup script will: |
| 83 | + |
| 84 | +- Verify Docker and Docker Compose are installed |
| 85 | +- Create necessary directories |
| 86 | +- Auto-detect your server IP address |
| 87 | +- Create or update the `.env` file |
| 88 | + |
| 89 | +```bash |
| 90 | +./setup.sh |
| 91 | +``` |
| 92 | + |
| 93 | +### 4. Configure Environment Variables |
| 94 | + |
| 95 | +Edit the `.env` file with your settings. See `.env.example` for all available environment variables and their descriptions. |
| 96 | + |
| 97 | +### 5. Configure Router DNS |
| 98 | + |
| 99 | +Configure your router to use Pi-hole as the DNS server: |
| 100 | + |
| 101 | +1. Log into your router's admin interface |
| 102 | +2. Find DNS settings (usually in DHCP or Network settings) |
| 103 | +3. Set Primary DNS to your server IP (e.g., `192.168.0.243`) |
| 104 | +4. Set Secondary DNS to a backup (e.g., `8.8.8.8` or `1.1.1.1`) |
| 105 | +5. Save and restart router if needed |
| 106 | + |
| 107 | +### 6. Start Services |
| 108 | + |
| 109 | +```bash |
| 110 | +docker compose up -d |
| 111 | +``` |
| 112 | + |
| 113 | +### 7. Access Services |
| 114 | + |
| 115 | +- **Pi-hole Admin**: `http://YOUR_SERVER_IP/admin` |
| 116 | +- **Homepage**: `http://YOUR_SERVER_IP:3000` |
68 | 117 |
|
69 | 118 | ## Project Structure |
70 | 119 |
|
71 | 120 | ``` |
72 | 121 | home-network/ |
73 | 122 | ├── docker-compose.yml # Main orchestration file |
74 | 123 | ├── .env # Environment variables (gitignored) |
75 | | -├── setup.sh # Initial setup script |
76 | | -├── docs/ # Service-specific documentation |
| 124 | +├── .env.example # Environment template |
| 125 | +├── setup.sh # Initial setup script |
| 126 | +├── package.json # Node.js dependencies |
| 127 | +├── PLANNING.md # Detailed planning and progress document |
| 128 | +├── docs/ # Service-specific documentation |
77 | 129 | │ └── pihole-*.md |
78 | | -├── scripts/ # Service-specific scripts |
| 130 | +├── scripts/ # Service-specific scripts |
79 | 131 | │ └── pihole/ |
80 | | -└── [service]/ # Service data directories |
| 132 | +├── pihole/ # Pi-hole data directories |
| 133 | +│ ├── etc/ |
| 134 | +│ └── etc-dnsmasq.d/ |
| 135 | +└── homepage/ # Homepage configuration |
| 136 | + └── config/ |
81 | 137 | ``` |
82 | 138 |
|
83 | | -## License |
| 139 | +## Progress & Planning |
| 140 | + |
| 141 | +For detailed information about: |
| 142 | + |
| 143 | +- Implementation progress and status |
| 144 | +- Phased rollout strategy |
| 145 | +- Architecture overview |
| 146 | +- Security considerations |
| 147 | +- Network configuration details |
| 148 | +- Future plans and roadmap |
| 149 | + |
| 150 | +See **[PLANNING.md](./PLANNING.md)** for the complete planning document. |
| 151 | + |
| 152 | +## Documentation |
| 153 | + |
| 154 | +- [Pi-hole Setup & Configuration](./docs/pihole-setup.md) |
| 155 | +- [Pi-hole Troubleshooting](./docs/pihole-troubleshooting.md) |
| 156 | + |
| 157 | +## Scripts |
| 158 | + |
| 159 | +- `scripts/pihole/test-pihole.sh` - Test Pi-hole functionality |
| 160 | +- `scripts/pihole/diagnose-pihole.sh` - Network diagnostic tool |
| 161 | +- `scripts/pihole/update-server-ip.sh` - Update server IP in .env |
| 162 | + |
| 163 | +## Contributing |
84 | 164 |
|
85 | | -[Add your license here] |
| 165 | +This is a personal home network setup project. Contributions and suggestions are welcome! |
0 commit comments