Initial commit
This commit is contained in:
commit
c21c853ccd
|
|
@ -0,0 +1,121 @@
|
|||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
# Web3 CV
|
||||
|
||||
A simple web page for my Web3 CV.
|
||||
|
||||
## Deployment
|
||||
|
||||
This website is deployed to:
|
||||
- [boilerhaus.org](https://boilerhaus.org) - Primary domain on VPS
|
||||
- [chriswylde.xyz](https://chriswylde.xyz) - Secondary domain on Vercel
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
### Initial Setup
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/boilerrat/Web3CV.git
|
||||
cd Web3CV
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Set up the VPS:
|
||||
```bash
|
||||
./setup-vps.sh
|
||||
```
|
||||
This script will:
|
||||
- Check if Nginx and Certbot are installed on your VPS
|
||||
- Create the necessary directories
|
||||
- Configure Nginx for boilerhaus.org, cloud.boilerhaus.org, and git.boilerhaus.org
|
||||
- Set up SSL certificates using Let's Encrypt
|
||||
- Configure Nextcloud to use cloud.boilerhaus.org (if installed)
|
||||
|
||||
4. Migrate to Gitea:
|
||||
```bash
|
||||
./migrate-to-gitea.sh
|
||||
```
|
||||
This script will:
|
||||
- Create a new repository on your Gitea instance
|
||||
- Push your code to Gitea
|
||||
- Set up the remotes for both Gitea and GitHub
|
||||
|
||||
### Development
|
||||
|
||||
1. Run the development server:
|
||||
```bash
|
||||
npx parcel index.html
|
||||
```
|
||||
|
||||
2. Open [http://localhost:1234](http://localhost:1234) in your browser.
|
||||
|
||||
### Deployment
|
||||
|
||||
1. Deploy to both VPS and Vercel:
|
||||
```bash
|
||||
./deploy-all.sh
|
||||
```
|
||||
This script will:
|
||||
- Build the site
|
||||
- Deploy to your VPS
|
||||
- Push changes to both Gitea and GitHub
|
||||
|
||||
2. Deploy only to VPS:
|
||||
```bash
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## Repository Management
|
||||
|
||||
This repository is hosted on a self-hosted Gitea instance. GitHub is used as a secondary remote for Vercel deployment.
|
||||
|
||||
### Remote Setup
|
||||
|
||||
After migration, your remotes will be configured as:
|
||||
- `origin`: Your Gitea repository (git@git.boilerhaus.org:boilerrat/Web3CV.git)
|
||||
- `github`: Your GitHub repository (for Vercel deployment)
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name boilerhaus.org www.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
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name cloud.boilerhaus.org;
|
||||
|
||||
# Managed by Certbot
|
||||
# This section will be updated by Certbot automatically
|
||||
|
||||
# Proxy to Nextcloud (will be active after SSL is set up)
|
||||
location / {
|
||||
return 503; # Temporary unavailable until SSL is configured
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name git.boilerhaus.org;
|
||||
|
||||
# Proxy to Gitea
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
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
|
||||
}
|
||||
|
||||
# SSL configurations will be added by Certbot automatically
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
body {
|
||||
background-color: #1d1d1d;
|
||||
border: none;
|
||||
color: #444;
|
||||
font-family: "Inter",sans-serif;
|
||||
font-size: 20px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background: #333;
|
||||
padding: 20px; /* Increase Button Height */
|
||||
font-size: 1.2em; /* Increase button font size */
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: #567730;
|
||||
}
|
||||
|
||||
.header-inner {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.site-title {
|
||||
font-size: 2.75em;
|
||||
font-family: "Gloock",cursive; /* Updated to Gloock font */
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
text-shadow: 1px 1px 2px rgba(0,0,0,.25);
|
||||
}
|
||||
|
||||
.site-title a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.site-title a:hover {
|
||||
color: #567730;
|
||||
}
|
||||
|
||||
.site-description {
|
||||
color: #999;
|
||||
font-size: 1.1em;
|
||||
font-family: "Inter", sans-serif;
|
||||
font-weight: 400;
|
||||
line-height: 110%;
|
||||
margin: 20px 0 0;
|
||||
text-align: center;
|
||||
text-shadow: 1px 1px 1px rgba(0,0,0,.25);
|
||||
}
|
||||
|
||||
.image-border {
|
||||
border: 10px solid #567730;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.section-header {
|
||||
color: #fff;
|
||||
font-size: 2em;
|
||||
font-family: "Gloock", cursive; /* Updated to Gloock font */
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
margin-top: .5em;
|
||||
margin-bottom: .5em;
|
||||
border: 1px solid #fff; /* Add a thin white border */
|
||||
padding: 10px; /* Add some padding */
|
||||
box-sizing: border-box; /* Include border and padding in the element's total width and height */
|
||||
}
|
||||
.figure img {
|
||||
height: 400px; /* Set a maximum height for the images */
|
||||
max-width: 100%;
|
||||
object-fit: cover; /* Resize the images to cover the entire area while maintaining the aspect ratio */
|
||||
}
|
||||
.figure figcaption {
|
||||
text-align: center; /* Center the caption */
|
||||
color: #fff; /* Set the text color to white */
|
||||
font-family: "Inter",sans-serif; /* Match the font with the rest of the webpage */
|
||||
font-size: 1em; /* Set the font size */
|
||||
}
|
||||
/* Media query for screens smaller than 600px */
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 15px;
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
/* Media query for screens smaller than 400px */
|
||||
@media (max-width: 400px) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 10px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script deploys your website to both your VPS and Vercel
|
||||
|
||||
# Build the site
|
||||
echo "Building the site..."
|
||||
npx parcel build index.html
|
||||
|
||||
# Deploy to VPS
|
||||
echo "Deploying to VPS..."
|
||||
rsync -avz --delete dist/ root@boilerhaus.org:/var/www/boilerhaus.org/
|
||||
|
||||
# Push changes to Gitea (now the origin remote)
|
||||
echo "Pushing changes to Gitea..."
|
||||
git add .
|
||||
git commit -m "Update website content" || echo "No changes to commit"
|
||||
git push origin main
|
||||
|
||||
# Push changes to GitHub for Vercel deployment (chriswylde.xyz)
|
||||
echo "Pushing changes to GitHub for Vercel deployment..."
|
||||
git push github main || echo "Failed to push to GitHub. Make sure the remote is correctly set up."
|
||||
|
||||
echo "Deployment complete!"
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Build the site
|
||||
echo "Building the site..."
|
||||
npx parcel build index.html
|
||||
|
||||
# Deploy to VPS
|
||||
echo "Deploying to VPS..."
|
||||
rsync -avz --delete dist/ root@boilerhaus.org:/var/www/boilerhaus.org/
|
||||
|
||||
echo "Deployment complete!"
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script fixes the git.boilerhaus.org subdomain configuration
|
||||
|
||||
# Check if we can connect to the VPS
|
||||
echo "Testing connection to VPS..."
|
||||
if ! ssh root@66.179.188.130 "echo 'Connection successful'"; then
|
||||
echo "Failed to connect to VPS. Please check your SSH configuration."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Upload the updated Nginx configuration
|
||||
echo "Uploading updated Nginx configuration..."
|
||||
scp boilerhaus.org.conf root@66.179.188.130:/etc/nginx/sites-available/boilerhaus.org
|
||||
|
||||
# Add git.boilerhaus.org to the SSL certificate
|
||||
echo "Adding git.boilerhaus.org to the SSL certificate..."
|
||||
ssh root@66.179.188.130 "certbot --nginx -d git.boilerhaus.org"
|
||||
|
||||
# Restart Nginx
|
||||
echo "Restarting Nginx..."
|
||||
ssh root@66.179.188.130 "systemctl restart nginx"
|
||||
|
||||
echo "Git subdomain fix complete!"
|
||||
echo "You should now be able to access git.boilerhaus.org"
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
<! DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" />
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css" rel="stylesheet" />
|
||||
<link href="css/style.css" rel="stylesheet" /> <!-- Link to your custom CSS file -->
|
||||
<script src="https://kit.fontawesome.com/56ab309fdd.js" crossorigin="anonymous"></script>
|
||||
<link rel="icon" href="https://i.imgur.com/Clv3Y1dt.png" type="image/png">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Gloock&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Handjet&family=Inter&display=swap" rel="stylesheet">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="header-inner section-inner my-5">
|
||||
<h1 class="site-title">
|
||||
<a href="https://www.chriswylde.xyz/" rel="home">
|
||||
<img src="https://en.gravatar.com/userimage/28803791/eb0d590383693b2cbaefb2379c9afe7a.jpeg?size=256" class="rounded-circle mx-auto d-block mb-3 image-border" />
|
||||
Boiler(Chris)
|
||||
</a>
|
||||
</h1>
|
||||
<p class="site-description">Web3 Futurist - DAO Design, Governance and Operations</p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://rxresu.me/boilerrat/victorious-present-lungfish" target="_blank" role="button">
|
||||
<i class="fa-solid fa-calendar-plus"></i> Professional Resume
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://calendly.com/boiler-chris/call-with-boilerrat" target="_blank" role="button">
|
||||
<i class="fa-solid fa-calendar-plus"></i> Book Time - Calendly
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://app.ens.domains/boilerhaus.eth" target="_blank" role="button">
|
||||
<i class="fa-brands fa-ethereum"></i> ENS - boilerhaus.eth
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://etherscan.io/address/0x6FeD46ed75C1165b6bf5bA21f7F507702A2691cB" target="_blank" role="button">
|
||||
<i class="fa-solid fa-chart-simple"></i> Etherscan
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://www.metokens.com/profile/0x6FeD46ed75C1165b6bf5bA21f7F507702A2691cB/" target="_blank" role="button">
|
||||
<i class="fa-solid fa-coins"></i> meToken
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://quest.philand.xyz/account/0x6FeD46ed75C1165b6bf5bA21f7F507702A2691cB" target="_blank" role="button">
|
||||
<i class="fa-solid fa-cube"></i> PhiLand
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
<h2 class="section-header">Social Media and Contacts</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://twitter.com/boilerrat" target="_blank" role="button">
|
||||
<i class="fa-brands fa-twitter"></i> Twitter
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://warpcast.com/boiler" target="_blank" role="button">
|
||||
<i class="fa-solid fa-archway"></i> Farcaster
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://lenster.xyz/u/boilerrat" target="_blank" role="button">
|
||||
<i class="fa-solid fa-binoculars"></i> Lens
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://mastodon.world/@boilerrat" target="_blank" role="button">
|
||||
<i class="fa-brands fa-mastodon"></i> Mastadon
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://github.com/boilerrat" target="_blank" role="button">
|
||||
<i class="fa-brands fa-github"></i> Github
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://www.linkedin.com/in/christopherwylde/" target="_blank" role="button">
|
||||
<i class="fa-brands fa-linkedin"></i> Linkedin
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://t.me/boilerrat" target="_blank" role="button">
|
||||
<i class="fa-brands fa-telegram"></i> Telegram
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://discordapp.com/users/boiler_chris" target="_blank" role="button">
|
||||
<i class="fa-brands fa-discord"></i> Discord
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="mailto:128boilerrat@gmail.com" target="_blank" role="button">
|
||||
<i class="fa-solid fa-envelope"></i> Email
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
<h2 class="section-header">DAO Memberships</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://admin.daohaus.fun/#/molochv3/0x1/0x54e1826d462570a06a6bc44a78fdfbf0568aa2f3" target="_blank" role="button">
|
||||
<i class="fa-solid fa-people-roof"></i> Boiler Family DAO
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://www.daomasons.com/" target="_blank" role="button">
|
||||
<i class="fa fa-chess-rook"></i> DAO Masons - Core Team, DAO Design and Operations
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://publichaus.club/" target="_blank" role="button">
|
||||
<i class="fa-brands fa-fort-awesome"></i> Public HAUS - Champion (Delegate)
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://www.youtube.com/channel/UC2UTfuf0xkIrLcmdnd96bGA" target="_blank" role="button">
|
||||
<i class="fa-solid fa-house"></i> DAOhaus - Warcamp (Core Contributor)
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://publicnouns.wtf/" target="_blank" role="button">
|
||||
<i class="fa-solid fa-glasses"></i> Public Nouns - NFT Holder and Contributor
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<a class="btn btn-dark col-12 py-3" href="https://www.metacartel.org/" target="_blank" role="button">
|
||||
<i class="fa-solid fa-pepper-hot"></i> Metacartel - Member and Contributor
|
||||
</a>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
<h2 class="section-header">Personal Profile Pictures</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-sm-12 mb-4">
|
||||
<figure class="figure">
|
||||
<img src="https://i.imgur.com/Clv3Y1d.png" class="img-fluid rounded mx-auto d-block" alt="Public Noun 237">
|
||||
<figcaption class="figure-caption text-center"><a href="https://etherscan.io/nft/0x93ecac71499147627dfec6d0e494d50fcfff10ee/237">Etherscan: Public Noun 237</a></figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<div class="col-lg-6 col-sm-12 mb-4">
|
||||
<figure class="figure">
|
||||
<img src="https://i.imgur.com/qvJL6Rd.png" class="img-fluid rounded mx-auto d-block" alt="Public Noun 111">
|
||||
<figcaption class="figure-caption text-center"><a href="">Etherscan: Public Noun 111</a></figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-sm-12 mb-4">
|
||||
<figure class="figure">
|
||||
<img src="https://i.imgur.com/BRXIjWr.png" class="img-fluid rounded mx-auto d-block" alt="Public Noun 65">
|
||||
<figcaption class="figure-caption text-center"><a href="https://etherscan.io/nft/0x93ecac71499147627dfec6d0e494d50fcfff10ee/65">Etherscan: Public Noun 65</a></figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<div class="col-lg-6 col-sm-12 mb-4">
|
||||
<figure class="figure">
|
||||
<img src="https://i.imgur.com/adQSaCJ.png" class="img-fluid rounded mx-auto d-block" alt="Boiler's Jerry">
|
||||
<figcaption class="figure-caption text-center"><a href="https://etherscan.io/nft/0x42c4a46bd0f9c642e852a848a5b730b6e3086ccf/32">Etherscan: Boiler's Jerry</a></figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fontawesome-iconpicker/3.2.0/js/fontawesome-iconpicker.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script helps migrate your repository from GitHub to your self-hosted Gitea
|
||||
|
||||
# First, check if we can connect to the Gitea server
|
||||
echo "Testing connection to Gitea server..."
|
||||
if ! ssh git@git.boilerhaus.org "echo 'Connection successful'"; then
|
||||
echo "Failed to connect to Gitea server. Please check your SSH configuration."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create a new repository on Gitea using the API instead of CLI
|
||||
echo "Creating a new repository on Gitea..."
|
||||
# We'll use curl to create the repository via the API
|
||||
# You'll need to generate an API token from your Gitea instance
|
||||
# Generate one at https://git.boilerhaus.org/user/settings/applications
|
||||
|
||||
read -p "Enter your Gitea API token: " API_TOKEN
|
||||
if [ -z "$API_TOKEN" ]; then
|
||||
echo "API token is required. Please generate one at https://git.boilerhaus.org/user/settings/applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl -X POST "https://git.boilerhaus.org/api/v1/user/repos" \
|
||||
-H "accept: application/json" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: token $API_TOKEN" \
|
||||
-d "{\"name\":\"Web3CV\",\"description\":\"My Web3 CV website\",\"private\":false,\"auto_init\":false}"
|
||||
|
||||
# Wait a moment for the repository to be created
|
||||
sleep 2
|
||||
|
||||
# Add Gitea as a new remote
|
||||
echo "Adding Gitea as a new remote..."
|
||||
git remote add gitea git@git.boilerhaus.org:boilerrat/Web3CV.git
|
||||
|
||||
# Verify the remote was added
|
||||
echo "Verifying remote..."
|
||||
git remote -v
|
||||
|
||||
# Push all branches and tags to Gitea
|
||||
echo "Pushing all branches and tags to Gitea..."
|
||||
git push --all gitea
|
||||
git push --tags gitea
|
||||
|
||||
# Set Gitea as the default remote
|
||||
echo "Setting Gitea as the default remote..."
|
||||
git remote rename origin github
|
||||
git remote rename gitea origin
|
||||
|
||||
echo "Migration to Gitea complete!"
|
||||
echo "Your repository is now available at: https://git.boilerhaus.org/boilerrat/Web3CV"
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script helps set up your VPS for hosting your website and Nextcloud
|
||||
|
||||
# Check if we can connect to the VPS
|
||||
echo "Testing connection to VPS..."
|
||||
if ! ssh root@66.179.188.130 "echo 'Connection successful'"; then
|
||||
echo "Failed to connect to VPS. Please check your SSH configuration."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Nginx is installed
|
||||
echo "Checking if Nginx is installed..."
|
||||
if ! ssh root@66.179.188.130 "which nginx > /dev/null"; then
|
||||
echo "Nginx is not installed. Installing..."
|
||||
ssh root@66.179.188.130 "apt update && apt install -y nginx"
|
||||
else
|
||||
echo "Nginx is already installed."
|
||||
fi
|
||||
|
||||
# Check if Certbot is installed
|
||||
echo "Checking if Certbot is installed..."
|
||||
if ! ssh root@66.179.188.130 "which certbot > /dev/null"; then
|
||||
echo "Certbot is not installed. Installing..."
|
||||
ssh root@66.179.188.130 "apt update && apt install -y certbot python3-certbot-nginx"
|
||||
else
|
||||
echo "Certbot is already installed."
|
||||
fi
|
||||
|
||||
# Create directory for the website
|
||||
echo "Creating directory for the website..."
|
||||
ssh root@66.179.188.130 "mkdir -p /var/www/boilerhaus.org"
|
||||
|
||||
# Create a temporary Nginx configuration without SSL
|
||||
echo "Creating temporary Nginx configuration..."
|
||||
cat > temp-boilerhaus.org.conf << EOF
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name boilerhaus.org www.boilerhaus.org cloud.boilerhaus.org git.boilerhaus.org;
|
||||
|
||||
root /var/www/boilerhaus.org;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files \$uri \$uri/ =404;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# Upload temporary Nginx configuration
|
||||
echo "Uploading temporary Nginx configuration..."
|
||||
scp temp-boilerhaus.org.conf root@66.179.188.130:/etc/nginx/sites-available/boilerhaus.org
|
||||
|
||||
# Enable the site
|
||||
echo "Enabling the site..."
|
||||
ssh root@66.179.188.130 "ln -sf /etc/nginx/sites-available/boilerhaus.org /etc/nginx/sites-enabled/boilerhaus.org"
|
||||
|
||||
# Restart Nginx with temporary configuration
|
||||
echo "Restarting Nginx with temporary configuration..."
|
||||
ssh root@66.179.188.130 "systemctl restart nginx"
|
||||
|
||||
# Check for existing Nextcloud configuration
|
||||
echo "Checking for existing Nextcloud configuration..."
|
||||
if ssh root@66.179.188.130 "[ -d /var/www/nextcloud ]"; then
|
||||
echo "Nextcloud directory found. Assuming Nextcloud is already installed."
|
||||
|
||||
# Ask if user wants to move Nextcloud to cloud subdomain
|
||||
read -p "Do you want to move Nextcloud to cloud.boilerhaus.org? (y/n): " move_nextcloud
|
||||
if [[ $move_nextcloud == "y" ]]; then
|
||||
echo "Updating Nextcloud configuration..."
|
||||
ssh root@66.179.188.130 "sed -i 's/\"trusted_domains\".*$/\"trusted_domains\" => [\"cloud.boilerhaus.org\"],/' /var/www/nextcloud/config/config.php"
|
||||
fi
|
||||
else
|
||||
echo "Nextcloud directory not found. Please install Nextcloud manually after setting up the domains."
|
||||
fi
|
||||
|
||||
# Check for Gitea port
|
||||
echo "Checking if Gitea is running..."
|
||||
if ssh root@66.179.188.130 "netstat -tuln | grep -q ':3000'"; then
|
||||
echo "Gitea appears to be running on port 3000."
|
||||
else
|
||||
echo "Warning: Gitea doesn't seem to be running on the expected port (3000)."
|
||||
echo "Please make sure Gitea is installed and running before proceeding."
|
||||
read -p "Continue anyway? (y/n): " continue_anyway
|
||||
if [[ $continue_anyway != "y" ]]; then
|
||||
echo "Setup aborted. Please install and configure Gitea first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up SSL certificates
|
||||
echo "Setting up SSL certificates..."
|
||||
ssh root@66.179.188.130 "certbot --nginx -d boilerhaus.org -d www.boilerhaus.org -d cloud.boilerhaus.org -d git.boilerhaus.org"
|
||||
|
||||
# Now upload the final configuration with SSL
|
||||
echo "Uploading final Nginx configuration with SSL..."
|
||||
scp boilerhaus.org.conf root@66.179.188.130:/etc/nginx/sites-available/boilerhaus.org
|
||||
|
||||
# Restart Nginx with final configuration
|
||||
echo "Restarting Nginx with final configuration..."
|
||||
ssh root@66.179.188.130 "systemctl restart nginx"
|
||||
|
||||
# Clean up temporary file
|
||||
rm temp-boilerhaus.org.conf
|
||||
|
||||
echo "VPS setup complete!"
|
||||
Loading…
Reference in New Issue