Commit two
This commit is contained in:
parent
a00a62f928
commit
e33ebdb0d1
21
.dockerignore
Normal file
21
.dockerignore
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Version control
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
# Docker files
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
.dockerignore
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
README.md
|
||||||
|
|
||||||
|
# Development files
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
website/*
|
||||||
|
!website/.gitignore
|
||||||
|
|
88
CLOUDFLARE-SETUP.md
Normal file
88
CLOUDFLARE-SETUP.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# Setting Up Cloudflare Tunnel for ABforAbortion Website
|
||||||
|
|
||||||
|
This guide will walk you through the process of setting up a Cloudflare Tunnel to securely expose your ABforAbortion website to the internet without opening ports on your firewall.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
1. A Cloudflare account
|
||||||
|
2. A domain registered and using Cloudflare DNS
|
||||||
|
3. Docker and Docker Compose installed on your server
|
||||||
|
|
||||||
|
## Step 1: Install cloudflared CLI
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# For Debian/Ubuntu
|
||||||
|
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
|
||||||
|
sudo dpkg -i cloudflared.deb
|
||||||
|
|
||||||
|
# For other systems, visit: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Authenticate with Cloudflare
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cloudflared login
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will open a browser window. Log in to your Cloudflare account and authorize the cloudflared application to access your account.
|
||||||
|
|
||||||
|
## Step 3: Create a Tunnel
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cloudflared tunnel create abforabortion-tunnel
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a new tunnel and store the credentials in `~/.cloudflared/[TUNNEL-ID].json`.
|
||||||
|
|
||||||
|
## Step 4: Get Your Tunnel ID
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cloudflared tunnel list
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the tunnel ID - you'll need to update it in the `cloudflared-config.yml` file.
|
||||||
|
|
||||||
|
## Step 5: Set Up DNS Records
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Replace with your actual domain and tunnel ID
|
||||||
|
cloudflared tunnel route dns your-tunnel-id abforabortion.com
|
||||||
|
cloudflared tunnel route dns your-tunnel-id www.abforabortion.com
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 6: Update the Configuration File
|
||||||
|
|
||||||
|
Edit the `cloudflared-config.yml` file:
|
||||||
|
|
||||||
|
1. Replace `your-tunnel-id` with your actual tunnel ID
|
||||||
|
2. Update the hostnames to match your domain
|
||||||
|
|
||||||
|
## Step 7: Start the Docker Containers
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose -f docker-compose-with-cloudflare.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 8: Monitor the Tunnel
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check logs
|
||||||
|
docker-compose -f docker-compose-with-cloudflare.yml logs -f cloudflared
|
||||||
|
|
||||||
|
# Check status
|
||||||
|
cloudflared tunnel info your-tunnel-id
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
- **Connection issues**: Check if the cloudflared container can access the web container
|
||||||
|
- **DNS issues**: Verify DNS records in your Cloudflare dashboard
|
||||||
|
- **Authentication issues**: Ensure credentials file exists and is mounted correctly
|
||||||
|
|
||||||
|
## Security Considerations
|
||||||
|
|
||||||
|
- The Cloudflare Tunnel provides secure access without exposing your server's IP address
|
||||||
|
- All traffic is encrypted between visitors and your origin server
|
||||||
|
- Authentication happens via Cloudflare's authentication system
|
||||||
|
|
||||||
|
For more information, visit the [Cloudflare Tunnel documentation](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/).
|
@ -62,8 +62,10 @@ For detailed instructions, see the [official Webflow Code Export guide](https://
|
|||||||
- Basic knowledge of terminal commands
|
- Basic knowledge of terminal commands
|
||||||
|
|
||||||
### Steps to Deploy
|
### Steps to Deploy
|
||||||
|
1. Clone this repository to your server:
|
||||||
1. Clone or copy this repository to your server
|
```bash
|
||||||
|
git clone https://gitea.bnkhome.org/bnkops/webflow.quick.server.git
|
||||||
|
```
|
||||||
|
|
||||||
2. Extract your Webflow code export into the `website/` directory
|
2. Extract your Webflow code export into the `website/` directory
|
||||||
|
|
||||||
|
28
cloudflared-config.yml
Normal file
28
cloudflared-config.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
## Cloudflare Tunnel configuration file
|
||||||
|
## This config connects your local website to the internet securely using Cloudflare Tunnels
|
||||||
|
|
||||||
|
# Tunnel configuration
|
||||||
|
tunnel: your-tunnel-id # Replace with your actual tunnel ID from Cloudflare
|
||||||
|
credentials-file: /root/.cloudflared/your-tunnel-id.json # Path to your tunnel credentials file
|
||||||
|
|
||||||
|
# Ingress rules define how traffic is routed
|
||||||
|
ingress:
|
||||||
|
# First rule: route all traffic to your local website
|
||||||
|
- hostname: abforabortion.com # Replace with your domain
|
||||||
|
service: http://localhost:80
|
||||||
|
|
||||||
|
# Second rule: you can add additional hostnames/subdomains
|
||||||
|
- hostname: www.abforabortion.com # Replace with your subdomain
|
||||||
|
service: http://localhost:80
|
||||||
|
|
||||||
|
# Default catch-all rule (required)
|
||||||
|
- service: http_status:404
|
||||||
|
|
||||||
|
# Log level options: debug, info, warn, error, fatal
|
||||||
|
logfile: /var/log/cloudflared.log
|
||||||
|
loglevel: info
|
||||||
|
|
||||||
|
# Optional: Set to true in production
|
||||||
|
originRequest:
|
||||||
|
connectTimeout: 30s
|
||||||
|
noTLSVerify: false
|
28
deploy.sh
Executable file
28
deploy.sh
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Make the script executable with: chmod +x deploy.sh
|
||||||
|
|
||||||
|
echo "=== AB for Abortion Website Deployment ==="
|
||||||
|
echo "Directory structure:"
|
||||||
|
echo " - website/ - Contains all website files"
|
||||||
|
echo " - nginx.conf - Web server configuration"
|
||||||
|
echo " - docker-compose.yml - Docker configuration"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
# Stop running containers
|
||||||
|
echo "Stopping any running containers..."
|
||||||
|
docker-compose down
|
||||||
|
|
||||||
|
# Pull the latest nginx image
|
||||||
|
echo "Pulling latest nginx:alpine image..."
|
||||||
|
docker-compose pull
|
||||||
|
|
||||||
|
# Start containers in detached mode
|
||||||
|
echo "Starting containers..."
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Display container status
|
||||||
|
echo "Container status:"
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
echo "Deployment complete! The website should be accessible at http://localhost"
|
31
docker-compose-with-cloudflare.yml
Normal file
31
docker-compose-with-cloudflare.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Your existing web server
|
||||||
|
web:
|
||||||
|
image: nginx:alpine
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
volumes:
|
||||||
|
- ./website:/usr/share/nginx/html
|
||||||
|
- ./nginx.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- web_network
|
||||||
|
|
||||||
|
# Cloudflare tunnel service
|
||||||
|
cloudflared:
|
||||||
|
image: cloudflare/cloudflared:latest
|
||||||
|
command: tunnel --config /etc/cloudflared/config.yml run
|
||||||
|
volumes:
|
||||||
|
- ./cloudflared-config.yml:/etc/cloudflared/config.yml:ro
|
||||||
|
- ~/.cloudflared:/root/.cloudflared:ro # Mount credentials from host
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
networks:
|
||||||
|
- web_network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web_network:
|
||||||
|
driver: bridge
|
11
docker-compose.yml
Normal file
11
docker-compose.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: nginx:alpine
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
volumes:
|
||||||
|
- ./website:/usr/share/nginx/html
|
||||||
|
- ./nginx.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
restart: always
|
38
nginx.conf
Normal file
38
nginx.conf
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# Enable gzip compression
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_min_length 1000;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
|
||||||
|
# Cache static assets
|
||||||
|
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|webp|avif|otf|ttf|woff|woff2)$ {
|
||||||
|
expires 30d;
|
||||||
|
add_header Cache-Control "public, no-transform";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle error pages
|
||||||
|
error_page 404 /404.html;
|
||||||
|
error_page 401 /401.html;
|
||||||
|
|
||||||
|
location = /404.html {
|
||||||
|
internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /401.html {
|
||||||
|
internal;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle all HTML files and directories
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user