### Start Hollo Server
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Starts the Hollo server in production mode using the pnpm run command.
```sh
pnpm run prod
```
--------------------------------
### Install Hollo Dependencies
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Installs all necessary project dependencies using the pnpm package manager.
```sh
pnpm install
```
--------------------------------
### Create Hollo Configuration File
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Copies the sample environment configuration file to be used for Hollo's settings.
```sh
cp .env.sample .env
```
--------------------------------
### Set up PostgreSQL for Hollo
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Creates a new PostgreSQL user with database creation privileges and then creates a new database for Hollo with UTF8 encoding.
```sh
createuser --createdb --pwprompt hollo
createdb --username=hollo --encoding=utf8 --template=postgres hollo
```
--------------------------------
### Clone Hollo Repository
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Clones the latest stable version of Hollo from GitHub and navigates into the project directory.
```sh
git clone -b stable https://github.com/fedify-dev/hollo.git
cd hollo/
```
--------------------------------
### Start Docker Compose Services
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/docker.mdx
Starts the services defined in the 'compose.yaml' file in detached mode.
```sh
docker compose up -d
```
--------------------------------
### Update Hollo Code
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/manual.mdx
Pulls the latest code changes from the GitHub repository to update the Hollo installation.
```sh
git pull
```
--------------------------------
### Docker Compose Configuration
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/docker.mdx
An example `compose.yaml` file to set up and run Hollo along with its dependencies (PostgreSQL and S3-compatible storage) using Docker Compose. This file defines the services, networks, and volumes required for the deployment.
```yaml
services:
postgres:
image: postgres:latest
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: hollo
POSTGRES_USER: hollo
POSTGRES_PASSWORD: hollo
minio:
image: minio/minio:latest
ports:
- "9000:9000"
volumes:
- minio_data:/data
environment:
MINIO_ROOT_USER: hollo
MINIO_ROOT_PASSWORD: hollo
command: server /data --console-address ":9001"
hollo:
image: ghcr.io/fedify-dev/hollo:latest
ports:
- "8080:8080"
environment:
HOLIO_POSTGRES_URL: postgres://hollo:hollo@postgres:5432/hollo
HOLIO_MEDIA_STORAGE_TYPE: s3
HOLIO_MEDIA_STORAGE_S3_ENDPOINT: http://minio:9000
HOLIO_MEDIA_STORAGE_S3_ACCESS_KEY_ID: hollo
HOLIO_MEDIA_STORAGE_S3_SECRET_ACCESS_KEY: hollo
depends_on:
- postgres
- minio
volumes:
postgres_data:
minio_data:
```
--------------------------------
### Run Hollo with Docker Compose
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/docker.mdx
Deploys Hollo along with its dependencies like PostgreSQL and S3-compatible object storage using Docker Compose. Save the provided YAML content as 'compose.yaml' and run the command to start the services.
```yaml
services:
postgres:
image: postgres:latest
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: hollo
POSTGRES_USER: hollo
POSTGRES_PASSWORD: hollo
minio:
image: minio/minio:latest
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server /data --console-address ":9001"
hollo:
image: ghcr.io/fedify-dev/hollo:latest
ports:
- "8080:8080"
environment:
HOLIO_DATABASE_URL: postgresql://hollo:hollo@postgres:5432/hollo
HOLIO_OBJECT_STORAGE_ENDPOINT: http://minio:9000
HOLIO_OBJECT_STORAGE_ACCESS_KEY_ID: minioadmin
HOLIO_OBJECT_STORAGE_SECRET_ACCESS_KEY: minioadmin
HOLIO_OBJECT_STORAGE_BUCKET: hollo
depends_on:
- postgres
- minio
volumes:
postgres_data:
```
--------------------------------
### Run Docker Compose Services
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/docker.mdx
Starts the services defined in the `compose.yaml` file in detached mode. This command is used after saving the `compose.yaml` file to launch the Hollo deployment.
```sh
docker compose up -d
```
--------------------------------
### Fix: Fetching Remote Posts for Local Accounts
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects an issue where `GET /api/v1/accounts/:id/statuses` attempted to fetch remote posts for local accounts.
--------------------------------
### Add GET /api/v1/blocks API
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Introduces the `GET /api/v1/blocks` API endpoint to the Mastodon compatibility layer. This endpoint retrieves a list of accounts blocked by the authenticated user.
```shell
GET /api/v1/blocks
```
--------------------------------
### Feature: GET /api/v1/statuses/:id/reblogged_by API
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Implements the `GET /api/v1/statuses/:id/reblogged_by` API endpoint for Mastodon compatibility, returning a list of accounts that have reblogged a post.
--------------------------------
### Fix Application Registration Confidentiality for Sign-in
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects an issue where Hollo installations failed to sign in with clients like Elk due to old application registrations defaulting to non-confidential. All existing applications are now properly set as confidential clients.
```OAuth
Client Type: Confidential
```
--------------------------------
### Fix GET /api/v1/accounts/:id/statuses remote post fetching
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects a bug in `GET /api/v1/accounts/:id/statuses` that caused it to attempt fetching remote posts for local accounts. This ensures accurate data retrieval.
```shell
GET /api/v1/accounts/:id/statuses
```
--------------------------------
### Add GET /api/v1/mutes API
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Introduces the `GET /api/v1/mutes` API endpoint to the Mastodon compatibility layer. This endpoint retrieves a list of accounts muted by the authenticated user.
```shell
GET /api/v1/mutes
```
--------------------------------
### Mastodon API Changes: Verify Credentials
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Details changes to the Mastodon API endpoint GET /api/v1/apps/verify_credentials. It no longer requires the 'read' scope, only a valid access token or client credential.
```HTTP
GET /api/v1/apps/verify_credentials
```
--------------------------------
### Add 'profile' OAuth Scope and /oauth/userinfo Endpoint
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Support for the 'profile' OAuth scope has been added, enabling applications to request limited user profile information. This is accessible via the new /oauth/userinfo endpoint and can also be used with the GET /api/v1/accounts/verify_credentials endpoint.
```OAuth
Requesting profile scope:
GET /oauth/authorize?response_type=code&client_id=...&redirect_uri=...&scope=profile
```
```HTTP
GET /oauth/userinfo HTTP/1.1
Host: example.com
Authorization: Bearer ACCESS_TOKEN
```
--------------------------------
### Make Mastodon API Endpoints Publicly Accessible
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Several Mastodon API endpoints, specifically GET /api/v1/statuses/:id and GET /api/v1/statuses/:id/context, are now publicly accessible without authentication. This change improves Hollo's compatibility and similarity to Mastodon's API.
```HTTP
GET /api/v1/statuses/12345 HTTP/1.1
Host: example.com
```
```HTTP
GET /api/v1/statuses/12345/context HTTP/1.1
Host: example.com
```
--------------------------------
### Import Starlight Components
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/setup.mdx
Imports the Aside and Steps components from the Astro Starlight library, which are used for structuring documentation content with visual cues like cautions and step-by-step instructions.
```javascript
import { Aside, Steps } from "@astrojs/starlight/components";
```
--------------------------------
### Hollo 수동 설치 - 환경 설정 파일 생성
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo의 기본 환경 설정 파일(.env.sample)을 복사하여 실제 사용할 설정 파일(.env)을 생성합니다. 이 파일은 추후 환경 변수 설정을 위해 사용됩니다.
```sh
cp .env.sample .env
```
--------------------------------
### Fix: GET /api/v1/notifications Server Errors
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Fixes server errors that occurred when using certain filters with the `GET /api/v1/notifications` API endpoint.
--------------------------------
### Hollo 수동 설치 - Git Clone
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo의 최신 코드를 GitHub 저장소에서 복제합니다. 이 명령은 stable 브랜치의 코드를 다운로드하고 hollo 디렉토리로 이동합니다.
```sh
git clone -b stable https://github.com/fedify-dev/hollo.git
cd hollo/
```
--------------------------------
### Hollo 업데이트 - 의존성 재설치
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo 업데이트 후 변경된 의존성을 pnpm을 사용하여 다시 설치합니다. 이는 최신 코드와 호환되는 라이브러리 버전을 보장합니다.
```sh
pnpm install
```
--------------------------------
### Fix GET /api/v1/notifications server errors
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Addresses an issue where `GET /api/v1/notifications` returned server errors when specific filters were applied. This fix ensures the API functions correctly with various filter parameters.
```shell
GET /api/v1/notifications
```
--------------------------------
### Hollo 업데이트 - 서버 재시작
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo 업데이트 후 변경 사항을 적용하기 위해 서버를 다시 시작합니다. `pnpm run prod` 명령은 업데이트된 애플리케이션을 실행합니다.
```sh
pnpm run prod
```
--------------------------------
### Hollo 업데이트 - 최신 코드 가져오기
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
GitHub 저장소에서 Hollo의 최신 코드를 가져옵니다. `git pull` 명령은 원격 저장소의 변경 사항을 로컬 저장소로 병합합니다.
```sh
git pull
```
--------------------------------
### Hollo 수동 설치 - pnpm 의존성 설치
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo 프로젝트에 필요한 의존성을 pnpm을 사용하여 설치합니다. 이 단계는 프로젝트 실행에 필수적인 라이브러리들을 준비합니다.
```sh
pnpm install
```
--------------------------------
### Hollo 수동 설치 - PostgreSQL 설정
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo에서 사용할 PostgreSQL 사용자 및 데이터베이스를 생성합니다. `--createdb` 옵션은 데이터베이스를 생성하고 `--pwprompt`는 비밀번호를 입력받습니다.
```sh
createuser --createdb --pwprompt hollo
createdb --username=hollo --encoding=utf8 --template=postgres hollo
```
--------------------------------
### Hollo Dockerイメージのプル
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ja/install/docker.mdx
Holloの公式DockerイメージをDocker Hubからプル(ダウンロード)します。これにより、ローカル環境でHolloを実行するための準備が整います。
```sh
docker pull ghcr.io/fedify-dev/hollo:latest
```
--------------------------------
### Deploy Hollo on Railway
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/railway.mdx
This snippet shows how to initiate the deployment of Hollo on Railway using a provided template. It requires S3-compatible object storage for media files and configuration of environment variables.
```javascript
import { Aside } from "@astrojs/starlight/components";
```
--------------------------------
### Docker ComposeによるHolloデプロイ
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ja/install/docker.mdx
Docker Composeを使用して、PostgreSQLデータベースとS3互換オブジェクトストレージ(MinIOなど)を含むHolloのデプロイメントを定義および実行します。この設定ファイルにより、複数のコンテナを連携させてHolloを簡単に起動できます。
```yaml
services:
postgres:
image: postgres:15
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: hollo
POSTGRES_USER: hollo
POSTGRES_PASSWORD: hollo
minio:
image: minio/minio:latest
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server /data --console-address ":9001"
hollo:
image: ghcr.io/fedify-dev/hollo:latest
ports:
- "8080:8080"
environment:
HOLIO_DATABASE_URL: postgresql://hollo:hollo@postgres/hollo
HOLIO_OBJECT_STORAGE_PROVIDER: s3
HOLIO_OBJECT_STORAGE_S3_BUCKET: hollo
HOLIO_OBJECT_STORAGE_S3_ENDPOINT: http://minio:9000
HOLIO_OBJECT_STORAGE_S3_ACCESS_KEY_ID: minioadmin
HOLIO_OBJECT_STORAGE_S3_SECRET_ACCESS_KEY: minioadmin
depends_on:
- postgres
- minio
volumes:
postgres_data:
```
--------------------------------
### Hollo Development Commands
Source: https://github.com/fedify-dev/hollo/blob/main/CLAUDE.md
Provides essential commands for developing the Hollo project, including type checking, linting, running tests, and code formatting using Biome. These commands ensure code quality and consistency.
```Shell
pnpm check
pnpm test
pnpm biome format --fix
```
--------------------------------
### Hollo 서버 시작
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/manual.mdx
Hollo 애플리케이션을 프로덕션 모드로 시작합니다. 이 명령은 빌드된 애플리케이션을 실행하여 서비스를 제공합니다.
```sh
pnpm run prod
```
--------------------------------
### Import Starlight Badge Component
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/clients.mdx
Imports the Badge component from the Astro Starlight library, used for marking recommended clients.
```javascript
import { Badge } from '@astrojs/starlight/components';
```
--------------------------------
### Hollo Features with Starlight Components
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/index.mdx
This snippet showcases the features of Hollo using Astro's Starlight components. It highlights aspects like single-user design, multiple account support, Mastodon API compatibility, CommonMark support, Misskey-style quotes, emoji reactions, and its foundation on Fedify. Each feature is presented in a card format with an icon.
```html
Hollo is designed for single-users, so you can own your instance
and have full control over your data. It's perfect for personal microblogs,
notes, and journals.
Although Hollo is designed for single-users, you can have multiple accounts
on the same instance. You can switch between accounts easily, and each
account has its own profile, posts, and settings.
Hollo is headless; instead, it complies with the [Mastodon API],
so that you can use any Mastodon-compatible client to interact with it.
[Mastodon API]: https://docs.joinmastodon.org/methods/
You can compose your posts in [CommonMark] (so-called Markdown),
and Hollo will render them for you—of course, other fediverse software
will render them as well. Moreover, you're allowed up to 10,000 characters
per post.
[CommonMark]: https://commonmark.org/
Hollo supports [Misskey]-style quotes, so you can quote other posts
in your own posts. It's compatible with other fediverse software that
supports Misskey-style quotes, e.g., Misskey, [Akkoma], [Fedibird],
[Threads].
[Misskey]: https://misskey-hub.net/
[Akkoma]: https://akkoma.social/
[Fedibird]: https://github.com/fedibird/mastodon
[Threads]: https://www.threads.net/
Hollo supports [Misskey]-style emoji reactions, so you can react to posts
with Unicode emojis and custom emojis. It's compatible with other fediverse
software that supports Misskey-style emoji reactions, e.g., Misskey,
[Akkoma].
[Misskey]: https://misskey-hub.net/
[Akkoma]: https://akkoma.social/
Hollo is powered by [Fedify], an ActivityPub server framework for TypeScript.
[Fedify]: https://fedify.dev/
```
--------------------------------
### Pull Hollo Docker Image
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/docker.mdx
Pulls the latest official Hollo Docker image from GitHub Packages. This is the first step to deploying Hollo using Docker.
```sh
docker pull ghcr.io/fedify-dev/hollo:latest
```
--------------------------------
### Hollo 설치 및 설정
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/index.mdx
Hollo는 Fedify 프레임워크를 사용하여 TypeScript로 구축되었습니다. 설치 및 설정에 대한 자세한 내용은 제공되지 않지만, Railway를 통한 설치 옵션이 언급되어 있습니다.
```TypeScript
import { Card, CardGrid } from "@astrojs/starlight/components";
Hollo는 1인 사용자용으로 설계되어 있어,
인스턴스를 스스로 소유하고 데이터에 대한 제어권을 완전히 가질 수 있습니다.
개인용 마이크로블로그, 노트, 일기 등에 안성맞춤입니다.
비록 Hollo는 1인 사용자용으로 설계되어 있지만,
한 인스턴스 안에서 여러 계정을 만드는 것이 가능합니다.
계정 간 전환도 쉽고, 각 계정은 자신만의 프로필, 게시물, 설정을 갖습니다.
Hollo는 자체 웹 인터페이스가 없습니다.
대신, [Mastodon API]와 호환되어, 아무 Mastodon 호환 클라이언트 앱으로
Hollo를 이용할 수 있습니다.
[Mastodon API]: https://docs.joinmastodon.org/methods/
[CommonMark](일명 Markdown)으로 게시물을 작성할 수 있으며,
그렇게 작성한 게시물은 연합우주의 다른 소프트웨어들에서도 잘 보여집니다.
또한, 게시물 당 최대 10,000자까지 작성할 수 있습니다.
[CommonMark]: https://commonmark.org/
Hollo는 [Misskey] 스타일의 인용 기능을 지원하므로,
다른 게시물을 인용하여 자신의 게시물에 포함시킬 수 있습니다.
이는 Misskey, [Akkoma], [Fedibird], [Threads] 등 Misskey 스타일 인용을 지원하는
다른 연합우주 소프트웨어들과도 호환됩니다.
[Misskey]: https://misskey-hub.net/ko/
[Akkoma]: https://akkoma.social/
[Fedibird]: https://github.com/fedibird/mastodon
[Threads]: https://www.threads.net/
Hollo는 [Misskey] 스타일의 에모지 리액션을 지원하므로,
게시물에 Unicode 에모지나 커스텀 에모지를 리액션으로 달 수 있습니다.
이는 Misskey, [Akkoma] 등 Misskey 스타일 에모지 리액션을 지원하는
다른 연합우주 소프트웨어들과도 호환됩니다.
[Misskey]: https://misskey-hub.net/
[Akkoma]: https://akkoma.social/
Hollo는 TypeScript를 위한 ActivityPub 서버 프레임워크인 [Fedify]로 제작되었습니다.
[Fedify]: https://fedify.dev/
```
--------------------------------
### Fix: Relative FS_ASSET_PATH Startup Failure
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Resolves a startup failure when `DRIVE_DISK` is set to `fs` and `FS_ASSET_PATH` is configured as a relative path.
--------------------------------
### Configure Public Asset Storage URL
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Sets the public URL base for accessing assets. Essential for federation and serving local files when using the 'fs' driver.
```env
STORAGE_URL_BASE=https://media.hollo.social
```
--------------------------------
### Configure Local Filesystem Storage Path
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Specifies the directory on the local filesystem where blob assets are stored. Requires the 'fs' driver and appropriate write permissions.
```bash
FS_STORAGE_PATH=/var/lib/hollo
```
--------------------------------
### Fix: Importing Follows from CSV
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Resolves issues with importing follows from CSV files generated by Iceshrimp.
--------------------------------
### Pull Hollo Docker Image
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/ko/install/docker.mdx
Pulls the latest official Docker image for Hollo from GitHub Packages. This is the first step to deploying Hollo locally.
```sh
docker pull ghcr.io/fedify-dev/hollo:latest
```
--------------------------------
### Specify Host Address with BIND Environment Variable
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
The BIND environment variable has been added to allow users to specify the host address on which Hollo should listen. This provides flexibility in network configuration and deployment.
```Shell
export BIND=0.0.0.0
# Or to listen on a specific IP:
# export BIND=192.168.1.100
```
--------------------------------
### Configure Local Filesystem Storage for Media
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
This snippet shows how to configure the project to use the local filesystem for storing media files. It involves setting the DRIVE_DISK environment variable to 'fs' and specifying the path for media storage with FS_ASSET_PATH. It also mentions the ASSET_URL_BASE environment variable for replacing S3_URL_BASE.
```Shell
DRIVE_DISK=fs
FS_ASSET_PATH=/path/to/media
ASSET_URL_BASE=http://yourdomain.com/media
```
--------------------------------
### Fedify Upgrade
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Upgrades the Fedify library to version 1.1.1.
```Go
Upgrade Fedify to 1.1.1
```
--------------------------------
### Change: Node.js Runtime
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Migrates the Hollo server from Bun to Node.js 23+ for improved memory efficiency.
--------------------------------
### Fix ActivityPub Discovery XHTML Self-Closing Tag Handling
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Resolves an issue where ActivityPub Discovery failed to recognize XHTML self-closing tags. The HTML/XHTML parser now correctly handles whitespace before the self-closing slash (/>), improving compatibility with XHTML documents.
```HTML
```
--------------------------------
### Upgrade: Fedify Library
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Updates the Fedify library to various minor versions, including critical security fixes.
--------------------------------
### Configure Sentry Integration
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
This snippet demonstrates how to enable Sentry for error tracking. It requires setting the SENTRY_DSN environment variable with the Data Source Name provided by Sentry.
```Shell
SENTRY_DSN=your_sentry_dsn_here
```
--------------------------------
### Implement OAuth 2.0 PKCE with S256 Code Challenge
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Hollo now includes support for OAuth 2.0 Proof Key for Code Exchange (PKCE) using the S256 code challenge method. This security enhancement helps prevent authorization code interception attacks during the OAuth authorization flow.
```OAuth
PKCE Flow:
1. Client creates code_verifier and code_challenge (S256).
2. Client sends authorization request with code_challenge.
3. Authorization server issues authorization code.
4. Client exchanges authorization code and code_verifier for access token.
```
--------------------------------
### Feature: Discoverable Profiles
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Allows users to make their profiles discoverable, enhancing visibility and integration within the network.
--------------------------------
### Configure Asset Storage with Environment Variables
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
This update introduces new environment variables for configuring asset storage. FS_STORAGE_PATH is required when DRIVE_DISK is set to 'fs', and STORAGE_URL_BASE is required for the base URL of stored assets. The previous FS_ASSET_PATH and ASSET_URL_BASE are now deprecated.
```Shell
export DRIVE_DISK=fs
export FS_STORAGE_PATH=/path/to/storage
export STORAGE_URL_BASE=https://cdn.example.com/assets
```
--------------------------------
### Feature: Profile Cover Images
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Adds the functionality for user profile pages to display a cover image if one is set.
--------------------------------
### Configure AWS Access Key ID
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Provides the access key for authenticating with S3-compatible object storage. This is required when using the 's3' driver.
```env
AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
```
--------------------------------
### Fix: Database Foreign Key Reference
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects a bug where the `follows.follower_id` column did not correctly reference the `accounts.id` column in the database.
--------------------------------
### Fix: Federation Dashboard Server Errors
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Resolves server errors that prevented the federation dashboard from displaying correctly on newly set up instances.
--------------------------------
### Enable ALLOW_HTML environment variable
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Adds the `ALLOW_HTML` environment variable to permit raw HTML within Markdown content. This allows for broader formatting options while mitigating XSS attacks through a restricted subset of HTML tags and attributes.
```bash
ALLOW_HTML=true
```
--------------------------------
### Configure S3 Path Style
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Enables or disables path-style URLs for S3-compatible object storage. Set to 'true' to force path style, useful for non-AWS services. Defaults to 'false'.
```env
S3_FORCE_PATH_STYLE=true
```
--------------------------------
### Fix: Update Activity Assertion Methods
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Resolves an interoperability problem with Mitra caused by the `Update` activity missing the `assertionMethods` field after an account profile update.
--------------------------------
### Mastodon API Changes: App Credentials
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Exposes 'redirect_uri', 'redirect_uris', and 'scopes' to verify credentials for apps in the Mastodon API.
```HTTP
Expose redirect_uri, redirect_uris, and scopes to verify credentials for apps
```
--------------------------------
### Configure S3 Bucket Name
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Specifies the name of the S3 bucket for storing assets. This is required when using the 's3' driver.
```env
S3_BUCKET=hollo
```
--------------------------------
### Feature: Data Import/Export (CSV)
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Enables importing and exporting of data such as follows, lists, muted accounts, blocked accounts, and bookmarks in CSV format via the administration dashboard.
--------------------------------
### Mastodon API Changes: Create App
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Details changes to the Mastodon API endpoint POST /api/v1/apps. It now supports multiple redirect URIs, and the 'redirect_uri' parameter is deprecated.
```HTTP
POST /api/v1/apps
```
--------------------------------
### Feature: LOG_FILE Environment Variable
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Introduces the `LOG_FILE` environment variable to specify the file path for writing structured logs in JSON Lines format.
--------------------------------
### Environment Variables for Hollo
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Introduces new environment variables for configuring the Hollo application: PORT for the server port and ALLOW_PRIVATE_ADDRESS for allowing private IP addresses.
```Shell
PORT
ALLOW_PRIVATE_ADDRESS
```
--------------------------------
### Generate Secret Key with OpenSSL
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Generates a random hexadecimal string of 64 characters suitable for use as a secret key for Hollo's session security. This command utilizes OpenSSL to produce a secure key.
```sh
openssl rand -hex 32
```
--------------------------------
### Upgrade Hollo on Railway
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/railway.mdx
Instructions for upgrading an existing Hollo deployment on Railway. This involves redeploying the service through the Railway dashboard by accessing the service's deployment options.
```html
1. Go to the Railway dashboard.
2. Choose your Hollo project.
3. Choose your Hollo service.

4. In the deployments, click the button in the right corner which looks
like three vertical dots.
5. In the dropdown, click *Redeploy* to redeploy the service.

```
--------------------------------
### Configure S3 Endpoint URL
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Sets the endpoint URL for S3-compatible object storage. This is required when using the 's3' driver and is useful for non-AWS services.
```env
S3_ENDPOINT_URL=https://s3.us-east-1.amazonaws.com
```
--------------------------------
### Enable Cross-Origin Requests for Specific Endpoints
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
The */.well-known/* and */oauth/* endpoints in Hollo now permit cross-origin requests. This alignment with Mastodon's behavior facilitates better interoperability and integration with other services.
```HTTP
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
```
--------------------------------
### Fix: Migration Dashboard Aliases
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects the display of the migration dashboard when account aliases include an unreachable actor.
--------------------------------
### Configure AWS Secret Access Key
Source: https://github.com/fedify-dev/hollo/blob/main/docs/src/content/docs/install/env.mdx
Provides the secret key for authenticating with S3-compatible object storage. This is required when using the 's3' driver.
```env
AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
```
--------------------------------
### Feature: IPv6 Preference
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Implements a preference for using IPv6 addresses over IPv4 addresses when establishing connections to remote servers.
--------------------------------
### Set Minimum SECRET_KEY Length
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Hollo now enforces a minimum length of 44 characters for the SECRET_KEY environment variable. This change is implemented to ensure sufficient cryptographic entropy, enhancing the security of the application's sensitive operations.
```Shell
export SECRET_KEY="a_very_long_and_secure_secret_key_with_at_least_44_characters"
```
--------------------------------
### Fix: LOG_LEVEL Environment Variable
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Ensures that the `LOG_LEVEL` environment variable is correctly respected for logging configurations.
--------------------------------
### Feature: TIMELINE_INBOXES Flag
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Introduces an experimental feature flag `TIMELINE_INBOXES` to store timeline posts in the database, improving performance for larger instances.
--------------------------------
### Fix Search Query Over-Inclusion and Timeouts
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Corrects a critical bug that caused search queries to return too many results, leading to out-of-memory errors and timeouts. The issue stemmed from incorrect logical operator precedence when filtering future-dated posts.
```SQL-like
SELECT * FROM posts WHERE created_at > NOW() AND is_future_dated = TRUE
```
--------------------------------
### Change: Sentry Log Sink Removal
Source: https://github.com/fedify-dev/hollo/blob/main/CHANGES.md
Removes the log sink for Sentry for the sake of concision.