diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..5cb57a0 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +SERVER_USER=your_server_username +SERVER_PASSWORD=your_server_password +SERVER_IP=your_server_ip \ No newline at end of file diff --git a/.parcel-cache/data.mdb b/.parcel-cache/data.mdb new file mode 100644 index 0000000..05f07e7 Binary files /dev/null and b/.parcel-cache/data.mdb differ diff --git a/.parcel-cache/lock.mdb b/.parcel-cache/lock.mdb new file mode 100644 index 0000000..e829fc6 Binary files /dev/null and b/.parcel-cache/lock.mdb differ diff --git a/README.md b/README.md index 0b21f4e..5e0cc9c 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ A modern, responsive personal website built with React, TypeScript, and Vite. Th **Clone the repository:** ```bash -git clone https://github.com/boilerrat/personal-website -cd personal-website +git clone https://git.boilerhaus.org/boiler/Web3CV.git +cd Web3CV ``` **Install dependencies:** @@ -49,46 +49,67 @@ npm run dev npm run build ``` -## 🌐 Domain Transfer to Vercel +## 🚀 Deployment + +This website is now deployed on a VPS at [boilerhaus.org](https://boilerhaus.org) using a custom deployment script. + +### Deployment Setup + +1. **Environment Configuration** + - Create a `.env` file based on `.env.example` + - Add your server credentials: + ``` + SERVER_USER=your_server_username + SERVER_PASSWORD=your_server_password + SERVER_IP=your_server_ip + ``` + +2. **Deploy to VPS** + - Run the deployment script: + ```bash + ./deploy-website.sh + ``` + - This script will: + - Build the project + - Create a tarball of the built files + - Upload to the server + - Extract files to the web directory + - Set proper permissions + +3. **Check Website Status** + - Run the status check script: + ```bash + ./check-website.sh + ``` + - This will check the status of all services: + - Portfolio website (boilerhaus.org) + - Gitea (git.boilerhaus.org) + - Vaultwarden (bw.boilerhaus.org) + - Nextcloud (cloud.boilerhaus.org) + +### Server Configuration + +The website is served by Nginx with SSL certificates from Let's Encrypt. The configuration files are located on the server at `/etc/nginx/sites-available/`. + +## 🌐 Domain Information ### Current Setup +- Domain: [boilerhaus.org](https://boilerhaus.org) +- Subdomains: + - [git.boilerhaus.org](https://git.boilerhaus.org) - Gitea instance + - [bw.boilerhaus.org](https://bw.boilerhaus.org) - Vaultwarden instance + - [cloud.boilerhaus.org](https://cloud.boilerhaus.org) - Nextcloud dashboard + +### Previous Setup (Archived) + - Domains: [www.chriswylde.xyz](https://www.chriswylde.xyz) and [www.boilerrat.xyz](https://www.boilerra.xyz) - Registrar: Namecheap -- Current Host: Netlify -- Target Host: Vercel - -### Steps to Transfer Domain to Vercel - -1. **Add Domain to Vercel Project** - - Go to your Vercel project dashboard - - Navigate to "Settings" > "Domains" - - Add your domains: `chriswylde.xyz` and `boilerrat.xyz` - - Vercel will provide nameserver information - -2. **Update Namecheap DNS Settings** - - Log in to Namecheap - - Go to "Domain List" and select your domain - - Click "Manage" - - Select "Custom DNS" under "Nameservers" - - Add Vercel's nameservers: - - ```bash - ns1.vercel-dns.com - ns2.vercel-dns.com - ``` - -3. **Wait for Propagation** - - DNS changes can take up to 48 hours to propagate - - You can check propagation status in Vercel's dashboard - -4. **SSL/HTTPS Setup** - - Vercel automatically provisions SSL certificates - - No additional configuration needed +- Previous Host: Netlify/Vercel ## 🤝 Contributing -Contributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/boilerrat/personal-website/issues). +Contributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://git.boilerhaus.org/boiler/Web3CV/issues). ## 📝 License @@ -96,7 +117,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file ## 👤 Contact -- Website: [chriswylde.xyz](https://www.chriswylde.xyz) +- Website: [boilerhaus.org](https://boilerhaus.org) - Twitter: [@boilerrat](https://twitter.com/boilerrat) - Farcaster: [@boiler](https://warpcast.com/boiler) -- Email: mailto [128boilerrat@gmail.com](mailto:128boilerrat@gmail.com) +- Email: [128boilerrat@gmail.com](mailto:128boilerrat@gmail.com) diff --git a/boilerhaus.org.conf.new b/boilerhaus.org.conf.new new file mode 100644 index 0000000..20e79e7 --- /dev/null +++ b/boilerhaus.org.conf.new @@ -0,0 +1,34 @@ +server { + listen 80; + listen [::]:80; + server_name boilerhaus.org; + + root /var/www/boilerhaus.org; + index index.html; + + location / { + try_files $uri $uri/ =404; + } + + # Managed by Certbot + # This section will be updated by Certbot automatically +} + +# Nextcloud configuration +server { + listen 80; + listen [::]:80; + server_name cloud.boilerhaus.org; + + # Proxy to Nextcloud + location / { + proxy_pass http://localhost:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # Managed by Certbot + # This section will be updated by Certbot automatically +} diff --git a/check-website.sh b/check-website.sh new file mode 100755 index 0000000..673ede8 --- /dev/null +++ b/check-website.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# This script checks the status of the portfolio website + +echo "Checking website status..." +curl -I https://boilerhaus.org + +echo -e "\nChecking Gitea status..." +curl -I https://git.boilerhaus.org + +echo -e "\nChecking Vaultwarden status..." +curl -I https://bw.boilerhaus.org + +echo -e "\nChecking Nextcloud status..." +curl -I https://cloud.boilerhaus.org + +echo -e "\nAll checks completed." \ No newline at end of file diff --git a/deploy-website.sh b/deploy-website.sh new file mode 100755 index 0000000..e068dc8 --- /dev/null +++ b/deploy-website.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# This script deploys the portfolio website from Gitea to the VPS + +# Load environment variables +if [ -f .env ]; then + source .env +else + echo "Error: .env file not found. Please create it based on .env.example." + exit 1 +fi + +# Check if sshpass is installed +if ! command -v sshpass &> /dev/null; then + echo "Error: sshpass is not installed. Please run 'sudo apt-get install sshpass' first." + exit 1 +fi + +# Set SSH and SCP commands with password +SSH_CMD="sshpass -p $SERVER_PASSWORD ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP" +SCP_CMD="sshpass -p $SERVER_PASSWORD scp -o StrictHostKeyChecking=no" + +# Set variables +REMOTE_DIR="/var/www/boilerhaus.org" +TEMP_DIR="./portfolio-temp" + +# Create a temporary directory for the website files +echo "Creating temporary directory..." +mkdir -p $TEMP_DIR + +# Check if TypeScript is installed +if ! command -v tsc &> /dev/null; then + echo "Installing TypeScript globally..." + npm install -g typescript +fi + +# Build the project +echo "Building the project..." +npm run build + +# Check if dist directory exists +if [ ! -d "dist" ]; then + echo "Error: Build failed. The dist directory does not exist." + exit 1 +fi + +# Create a tarball of the built files +echo "Creating tarball of the built files..." +cd dist +tar -czf ../portfolio-dist.tar.gz . +cd .. + +# Upload the tarball to the server +echo "Uploading to server..." +$SCP_CMD portfolio-dist.tar.gz $SERVER_USER@$SERVER_IP:/tmp/ + +# Extract the tarball on the server +echo "Extracting files on server..." +$SSH_CMD "mkdir -p $REMOTE_DIR && \ + tar -xzf /tmp/portfolio-dist.tar.gz -C $REMOTE_DIR && \ + chown -R www-data:www-data $REMOTE_DIR && \ + rm /tmp/portfolio-dist.tar.gz" + +# Clean up local files +echo "Cleaning up..." +rm -rf $TEMP_DIR portfolio-dist.tar.gz + +echo "Portfolio website deployed successfully!" \ No newline at end of file diff --git a/update-from-gitea.sh b/update-from-gitea.sh new file mode 100755 index 0000000..ba89584 --- /dev/null +++ b/update-from-gitea.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# This script updates the local repository from Gitea + +echo "Updating local repository from Gitea..." + +# Fetch the latest changes from Gitea +git fetch origin + +# Check if there are any changes +if git diff --quiet HEAD origin/main; then + echo "Local repository is already up to date." +else + echo "New changes detected. Updating local repository..." + + # Stash any local changes + git stash + + # Pull the latest changes + git pull origin main + + # Apply stashed changes if any + if git stash list | grep -q "stash@{0}"; then + echo "Applying stashed changes..." + git stash pop + fi + + echo "Local repository updated successfully!" +fi \ No newline at end of file