docker releases

This commit is contained in:
Zoe
2025-09-22 18:49:05 -05:00
parent 0558c719d6
commit 8c18e81358
3 changed files with 108 additions and 27 deletions

39
.github/workflows/docker-publish.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: Build and Push Docker Image to GHCR
on:
push:
branches: ["main"]
tags: ["v*.*.*"]
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

21
Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM golang:1.25 AS builder
WORKDIR /app
ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64
RUN apt-get update && apt-get install -y gcc libc6-dev sqlite3 ca-certificates
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -ldflags="-w -s" -o passport
# ---- Runtime Stage ----
FROM gcr.io/distroless/cc-debian12
WORKDIR /data
COPY --from=builder /app/passport /usr/local/bin/passport
EXPOSE 3000
CMD ["/usr/local/bin/passport"]

View File

@@ -17,47 +17,68 @@ Passport is a simple, fast, and lightweight web dashboard/new tab replacement.
## Usage ## Usage
1. Clone the repository ### Docker
2. Configure the `.env` file, an example is provided in the `.env.example` file, see below for every available environment variable
4. Deploy `passport` to your web server Passport is available as a Docker image via this repository. This is the recommended way to run Passport.
5. profit
```bash
docker run -d --name passport -p 3000:3000 -e PASSPORT_ADMIN_USERNAME=admin -e PASSPORT_ADMIN_PASSWORD=password ghcr.io/juls0730/passport:latest
```
### Building from source
If you want to build from source, you will need to install the dependencies first.
```bash
go install github.com/juls0730/zqdgr@latest
go install github.com/tailwindlabs/tailwindcss-cli@latest
```
Then you can build the binary.
```bash
go build -o passport
```
You can then run the binary.
### Configuration ### Configuration
#### Passport configuration #### Passport configuration
| Environment Variable | Description | Required | Default | | Environment Variable | Description | Required | Default |
| --- | --- | --- | --- | | -------------------------------------- | ------------------------------------------------------------------------------- | -------- | ------- |
| `PASSPORT_DEV_MODE` | Enables dev mode | false | false | | `PASSPORT_DEV_MODE` | Enables dev mode | false | false |
| `PASSPORT_ENABLE_PREFORK` | Enables preforking | false | false | | `PASSPORT_ENABLE_PREFORK` | Enables preforking | false | false |
| `PASSPORT_ENABLE_WEATHER` | Enables weather data, see [Weather configuration](#weather-configuration) | false | false | | `PASSPORT_ENABLE_WEATHER` | Enables weather data, see [Weather configuration](#weather-configuration) | false | false |
| `PASSPORT_ENABLE_UPTIME` | Enables uptime data, see [Uptime configuration](#uptime-configuration) | false | false | | `PASSPORT_ENABLE_UPTIME` | Enables uptime data, see [Uptime configuration](#uptime-configuration) | false | false |
| `PASSPORT_ADMIN_USERNAME` | The username for the admin dashboard | true | | `PASSPORT_ADMIN_USERNAME` | The username for the admin dashboard | true |
| `PASSPORT_ADMIN_PASSWORD` | The password for the admin dashboard | true | | `PASSPORT_ADMIN_PASSWORD` | The password for the admin dashboard | true |
| `PASSPORT_SEARCH_PROVIDER` | The search provider to use for the search bar, without any query parameters | true | | `PASSPORT_SEARCH_PROVIDER` | The search provider to use for the search bar, without any query parameters | true |
| `PASSPORT_SEARCH_PROVIDER_QUERY_PARAM` | The query parameter to use for the search provider, e.g. `q` for most providers |false | q | | `PASSPORT_SEARCH_PROVIDER_QUERY_PARAM` | The query parameter to use for the search provider, e.g. `q` for most providers | false | q |
#### Weather configuration #### Weather configuration
| Environment Variable | Description | Required | Default | | Environment Variable | Description | Required | Default |
| --- | --- | --- | --- | | ----------------------------- | ------------------------------------------------------------------------- | ---------- | -------------- |
| `OPENWEATHER_PROVIDER` | The weather provider to use, currently only `openweathermap` is supported | true | openweathermap | | `OPENWEATHER_PROVIDER` | The weather provider to use, currently only `openweathermap` is supported | true | openweathermap |
| `OPENWEATHER_API_KEY` | The OpenWeather API key | if enabled | | | `OPENWEATHER_API_KEY` | The OpenWeather API key | if enabled | |
| `OPENWEATHER_TEMP_UNITS` | The temperature units to use, either `metric` or `imperial` | false | metric | | `OPENWEATHER_TEMP_UNITS` | The temperature units to use, either `metric` or `imperial` | false | metric |
| `OPENWEATHER_LAT` | The latitude of your location | if enabled | | | `OPENWEATHER_LAT` | The latitude of your location | if enabled | |
| `OPENWEATHER_LON` | The longitude of your location | if enabled | | | `OPENWEATHER_LON` | The longitude of your location | if enabled | |
| `OPENWEATHER_UPDATE_INTERVAL` | The interval in minutes to update the weather data | false | 15 | | `OPENWEATHER_UPDATE_INTERVAL` | The interval in minutes to update the weather data | false | 15 |
#### Uptime configuration #### Uptime configuration
| Environment Variable | Description | Required | Default | | Environment Variable | Description | Required | Default |
| --- | --- | --- | --- | | ----------------------------- | ------------------------------------------------- | ---------- | ------- |
| `UPTIMEROBOT_API_KEY` | The UptimeRobot API key | if enabled | | | `UPTIMEROBOT_API_KEY` | The UptimeRobot API key | if enabled | |
| `UPTIMEROBOT_UPDATE_INTERVAL` | The interval in seconds to update the uptime data | false | 300 | | `UPTIMEROBOT_UPDATE_INTERVAL` | The interval in seconds to update the uptime data | false | 300 |
### Adding links and categories ### Adding links and categories
The admin dashboard can be accessed at `/admin`, you will be redirected to the login page if you are not logged in, use the credentials you configured in the `.env` file to login. Once logged in you can add links and categories. The admin dashboard can be accessed at `/admin`, you will be redirected to the login page if you are not logged in, use
the credentials you configured via the environment variables to login. Once logged in you can add links and categories.
## License ## License