diff --git a/guide.md b/guide.md index 2ba77fb..2096458 100644 --- a/guide.md +++ b/guide.md @@ -11,7 +11,7 @@ prerequisites: A credit card for VPS hosting ($3.50-6/month), A domain name ($1- By the end of this guide, you'll have a **fully working website** that: -- Lives on a server **you** control (not Squarespace, Wix, or WordPress.com) +- Lives on a server **you** control (not Squarespace, Wix, or WordPress.com — more on the difference below) - Has a **free SSL certificate** (the padlock icon that means your site is secure) - Runs [WordPress](https://wordpress.org/) — the same software that powers over 40% of all websites on the internet - Includes **automatic backups**, a **security firewall**, and optional **age verification** @@ -21,10 +21,14 @@ By the end of this guide, you'll have a **fully working website** that: WebsiteBox packages WordPress with all the security, backups, and server configuration already done for you. You just answer a few questions and your site is live. +[callout:info] +**WordPress.org vs WordPress.com — what's the difference?** [WordPress.com](https://wordpress.com/) is a paid hosting service run by a company. [WordPress.org](https://wordpress.org/) is the free, open-source software itself — anyone can download and run it on their own server. WebsiteBox uses WordPress.org, giving you full control with no monthly platform fees (you only pay for the server itself). +[/callout] + **What you'll need before starting:** - A **credit or debit card** to rent a server ($3.50-6/month) -- A **domain name** — the address for your website (e.g., `myportfolio.com`). If you don't have one yet, you'll buy one in Step 2 (~$1-12/year). +- A **domain name** — the address for your website (e.g., `myportfolio.com`). If you don't have one yet, you'll buy one in the "Get a Domain Name" step (~$1-12/year). - About **45 minutes** of time - A **computer** with internet access (Mac, Windows, or Linux — any will work) @@ -99,7 +103,7 @@ Don't worry if you've never done this before — you'll only need to type a few **On Mac:** 1. Open the **Terminal** app (find it in Applications > Utilities, or press `Cmd + Space` and type "Terminal") -2. Type the following command, replacing `YOUR_SERVER_IP` with the actual IP address from Step 1: +2. Type the following command, replacing `YOUR_SERVER_IP` with the actual IP address from the "Get a Server" step: [code:bash] ssh root@YOUR_SERVER_IP @@ -122,7 +126,7 @@ Open any terminal application and type the same `ssh` command above. The first time you connect, you'll get a security message. This is normal — it's your computer asking if you trust this new server. Type `yes` and press Enter. -Then you'll be asked for a password. Type the **root password** from Step 1 and press Enter. +Then you'll be asked for a password. Type the **root password** from the "Get a Server" step and press Enter. [terminal] $ ssh root@203.0.113.45 @@ -207,7 +211,7 @@ WebsiteBox can require visitors to confirm their age before viewing your site. T - Type `n` to disable — visitors go straight to your site **7. SMTP server** (optional) -This lets WordPress send emails (like password resets or contact form notifications). If you don't have an email service set up, just press **Enter** to skip. You can configure this later. +This lets WordPress send emails (like password resets or contact form notifications). If you don't have an email service set up, just press **Enter** to skip — your site will work fine without it. If you want to set it up later, popular email relay services include [Mailgun](https://www.mailgun.com/) (free tier available), [SendGrid](https://sendgrid.com/) (free tier), and [Amazon SES](https://aws.amazon.com/ses/) (very cheap). **8. Backup retention** How many days to keep automatic backups of your site. The default is 30 days, which is a good balance between safety and disk space. @@ -278,7 +282,7 @@ This is done by adding a **DNS record** — specifically an **"A record"** — i 4. Fill in these values: - **Type:** `A` - **Host** or **Name:** `@` (the `@` symbol means "the root domain itself" — i.e., `yourdomain.com` without anything in front) - - **Value**, **Answer**, or **Points to:** Your server's IP address (the number from Step 1, e.g., `203.0.113.45`) + - **Value**, **Answer**, or **Points to:** Your server's IP address (the number from the "Get a Server" step, e.g., `203.0.113.45`) - **TTL:** Leave as "Auto" or pick the lowest number available (like 300 or 600) 5. Click **Save** or **Add record** @@ -409,7 +413,7 @@ WebsiteBox comes with three plugins already set up: - **[Wordfence Security](https://www.wordfence.com/)** — Protects your site from hackers and brute-force login attempts. Configure under **Wordfence** in the sidebar. The default settings are good — you don't need to change anything unless you want to. - **[UpdraftPlus](https://updraftplus.com/)** — Creates automatic backups of your site. Configure under **Settings > UpdraftPlus Backups**. Backups are already set to save locally on your server. You can optionally add remote backup to services like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html) or [Amazon S3](https://aws.amazon.com/s3/) for extra safety. -- **[Age Gate](https://developer.wordpress.org/plugins/age-gate/)** — The age verification screen. Configure under **Settings > Age Gate**. You can change the messaging, styling, minimum age, and which pages require verification. +- **[Age Gate](https://wordpress.org/plugins/age-gate/)** — The age verification screen. Configure under **Settings > Age Gate**. You can change the messaging, styling, minimum age, and which pages require verification. **Installing additional plugins:** @@ -435,7 +439,7 @@ One of the best things about WebsiteBox is that it takes care of itself. Once yo - **Restarts after server reboots** — if your VPS provider reboots the server for maintenance, your site comes back online automatically - **Backs up your data** on a regular schedule via [UpdraftPlus](https://updraftplus.com/) -That said, there are a few simple maintenance tasks worth doing occasionally. All of them require connecting to your server via SSH (same process as Step 3 — open your terminal and run `ssh root@YOUR_SERVER_IP`) and running a short command. +That said, there are a few simple maintenance tasks worth doing occasionally. All of them require connecting to your server via SSH (same process as "Connect to Your Server" — open your terminal and run `ssh root@YOUR_SERVER_IP`) and running a short command. **Check that everything is running smoothly:** @@ -444,6 +448,8 @@ cd ~/websitebox ./scripts/healthcheck.sh [/code] +(The `./` at the start means "run this file from the current folder." You'll see this in front of all the script commands below.) + This checks all parts of your website and reports their status. You want to see `[OK]` next to each service: [terminal] @@ -490,13 +496,13 @@ This happens inside your browser, not the terminal. Log in to `https://yourdomai [step: Troubleshooting] -If something isn't working, don't panic. Here are the most common issues and exactly how to fix them. For all of these, you'll need to SSH into your server (same as Step 3) first. +If something isn't working, don't panic. Here are the most common issues and exactly how to fix them. For all of these, you'll need to connect to your server via SSH first (same as the "Connect to Your Server" step — open your terminal and run `ssh root@YOUR_SERVER_IP`). **Your site shows a "Setting up SSL..." page:** This means the SSL certificate hasn't been issued yet, usually because DNS isn't pointing to your server. To fix: -1. Go back to your domain registrar and double-check the A record points to the correct IP address (Step 6) +1. Go back to your domain registrar and double-check the A record points to the correct IP address (see "Point Your Domain to Your Server") 2. Wait for DNS propagation — try `dig yourdomain.com +short` to check 3. Once DNS is correct, tell the web server to retry: @@ -589,7 +595,11 @@ rm -rf websitebox-data/ docker compose up -d [/code] -This keeps your server intact and re-runs the setup wizard from scratch. You'll need to re-enter your configuration and set up your content again from scratch. +Here's what each line does: +- `docker compose down` — stops and removes all the website containers +- `rm -rf websitebox-data/` — deletes all website data (database, uploads, certificates). **This is irreversible.** +- `./setup.sh` — re-runs the setup wizard so you can configure everything fresh +- `docker compose up -d` — starts the website again from scratch [callout:danger] The "nuclear option" above **permanently deletes all your website content**. Only use it as a last resort. Always try the other fixes first, and if possible, run `./scripts/backup.sh` before wiping anything. @@ -615,8 +625,11 @@ When you're ready for search engines to find your site, go to **Settings > Readi **Put a CDN in front of your site:** A CDN (Content Delivery Network) caches your images and pages on servers around the world, making your site load faster for visitors far from your server. [Cloudflare](https://www.cloudflare.com/) offers a free plan — you just change your domain's nameservers to Cloudflare's. +**Keep your server secure:** +Your server's root password is the keys to your entire website. Use a strong, unique password and consider setting up [SSH key authentication](https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-ubuntu-22-04) for even better security (this lets you log in without a password, using a cryptographic key stored on your computer instead). + **Learn more about WordPress:** -[WordPress.org's documentation](https://wordpress.org/documentation/) and [WPBeginner](https://www.wpbeginner.com/) are excellent free resources for learning how to get the most out of your site. +[WordPress.org's documentation](https://wordpress.org/documentation/) and [WPBeginner](https://www.wpbeginner.com/) are excellent free resources for learning how to get the most out of your site. The [WordPress block editor guide](https://wordpress.org/documentation/article/wordpress-block-editor/) is particularly helpful for learning how to create beautiful page layouts. [callout:tip] You now own your website infrastructure. Unlike hosted platforms, nobody can take your site down for content policy reasons, raise your prices unexpectedly, or lock you into their ecosystem. Your data lives on your server, and you can move it anywhere.