This is a guide to configuring a quick Debian Home Server (with some guides about CentOS), made to be accessed anywhere on the Internet. It is made for use with old laptops and ARM dev boards, since both computers save power.
Running a home server is a very useful way to gain experience before managing actual dedicated server blades in the cloud.
Why run a Home Server?
- Personal Cloud - It's time to make your own cloud. And you'll probably be all the better for it.
- IRC Bouncer - Stick around and get all the chat history and private messages using an IRC Bouncer.
- Torrent Seedbox - If you're in college, you had better avoid using p2p on their guarded networks. Take the responsibility on yourself by downloading from a home seedbox.
- You could also get a real seedbox which has protections against reports.
Explore other types of home servers in this article.
When to move to a real Server
- Redundancy and Reliability - Old hard drives are definitely at the bottom of the barrel when it comes to reliability, so make backups. Building systems to increase redundancy requires a RAID array (which may require a lot more than just 5-6 SATA ports), and reliability demands ECC (error-correcting) RAM.
- Public Websites/Datacenters - Unless your server is at a small business building, public websites or data hosts should not be served from your house (unless you want your ISP to raise your bill).
Guides to configuring Debian home servers.
- Debian Netinstall - Barebones system with only what you need.
- Crunchbang - God Save the Crunch. Minimal Desktop Debian, with BunsenLabs and CB++.
- CentOS - What if Red Hat Linux was free?
- Port Forwarding - To remotely access a server on the open internet, you must port forward the services.
- Static IP - You should set a static IP for a server within the router DHCP subnet.
- SSH - Remotely administer your server. Also use SFTP, SSH Tunneling, X11 Forwarding, Reverse SSH Tunneling.
- SSH/Client - Access the SSH Server.
- DNS - You can use duckdns.org if you don't want to pay for a domain name, or namecheap if you do.
- Shell - Which command line shell to use. Some modifications can significantly make your life much better.
- Torrents - Torrent Servers
- IRC Bouncer - IRC Bouncers are critical to idling on IRC servers and receiving private messages.
- Web Server - Which web server is right for you?
- Partitioning - How to arrange the partitions.
- LVM - Alternatively, Logical Volume Management allows partitions to be expanded or resized at will.
- fstab - Automount partitions at boot.
- SSD - Optimizations for ssd storage
- Bind Mount Directories
- NAS/Devices - Build a low power Network Attached Storage array for the home.
- Object Storage - Beyond 4TB RAID rebuild times start to become ineffective. Ceph and other object storage options will have to be explored.
- LTO Tape - The holy grail of archival storage on the cheap.
- Disk Recovery - If you accidentally blew away your partition table, you'll have to recover the data.
- GPU/Processing - A GPU can be used for much more than just games.
- Disable Lid Suspend - Don't suspend when the laptop lid is down.
- Disable PC Speaker Beep - It can be annoying if you accidentally press a wrong command and your server at home beeps randomly.
- Systemd/Nspawn - Used to create simple linux containers under the same kernel.
Guides for configuring and setting up a true CentOS dedicated server/VPS.
Always thoroughly test your dedicated server before you use it.
- Memtest - Test the sanity of your memory (especially non-ECC). use memtest86++ at boot (included on most linux distro livecds).
- Hard Drive Test - Test the reliability of your hard drives.
- Speed Test - Test connection speeds and peering worldwide, as well as read/write speeds.
- Stress Test - Test the overall performance of the computer.
- Hostname - The hostname is related to your server's primary domain.
- Firewalls - Easy firewalls with FirewallD.
- Web Server - A production dedicated server has a more complex web server design.
- Rsync Server - Rsync Servers are a reliable way of transmitting and syncing data across the internet, without resending what was already synced
- Rsync with SELinux