Skip to content

Instantly share code, notes, and snippets.

View zuedev's full-sized avatar
👀
Looking for more projects!

Alex zuedev

👀
Looking for more projects!
View GitHub Profile
@zuedev
zuedev / gitea-repository-storage.md
Created May 4, 2026 22:46
Gitea Repository Storage Architecture

Gitea Repository Storage Architecture

Two Distinct Storage Systems

Gitea has two separate storage systems that work side by side:

A. Git Repository Storage (raw .git bare repos)

  • Configured via [repository] ROOT in app.ini
  • Default path: {APP_DATA_PATH}/gitea-repositories
@zuedev
zuedev / healthcheck.bash
Last active April 19, 2026 20:57
Bash health check script for an Intel i9-9900K / 128GB DDR4-2666 / RAID 0 NVMe system running Debian 13.
#!/usr/bin/env bash
# =============================================================================
# System Health Check — i9-9900K / 128GB DDR4-2666 / RAID 0 NVMe
# =============================================================================
# Usage:
# chmod +x healthcheck.sh
# sudo ./healthcheck.sh # Full check
# sudo ./healthcheck.sh --quick # Skip fio storage test
# sudo ./healthcheck.sh --fix # Attempt to fix issues found
# =============================================================================
@zuedev
zuedev / Arma3_GetModsFromEnabled.ps1
Created March 7, 2026 16:51
This script reads the Arma 3 Launcher's preset XML file to determine which mods are enabled, then looks up their paths in the Steam.json file, and finally generates a startup parameter string that can be used to launch Arma 3 with only those mods.
# Arma3_GetModsFromEnabled.ps1
#
# This script reads the Arma 3 Launcher's preset XML file to determine which mods are enabled, then looks up their paths in the Steam.json file, and finally generates a startup parameter string that can be used to launch Arma 3 with only those mods.
#
# Note: This script assumes that the user has the Arma 3 Launcher installed and that the preset and Steam.json files are located in their default locations.
# read and parse the Arma 3 Launcher's preset XML file
$presetPath = "C:\Users\$env:USERNAME\AppData\Local\Arma 3 Launcher\Presets\arma3.defaultpreset2"
[xml]$xml = Get-Content -Path $presetPath
@zuedev
zuedev / FileStatTree.cs
Created February 11, 2026 18:50
An editor tool that scans a hierarchy to identify and list all referenced assets (textures, meshes, and materials) sorted by disk size. It’s a quick way to find and optimize the largest files bloating your project.
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;
using System.Linq;
public class FileStatTree : EditorWindow
{
private GameObject targetObject;
private List<AssetSizeInfo> assetList = new List<AssetSizeInfo>();
@zuedev
zuedev / PoiyomiFinder.cs
Created February 11, 2026 18:42
A utility script that adds a custom Editor window to Unity for scanning hierarchies. It quickly identifies and lists all GameObjects using Poiyomi shaders, providing one-click selection to streamline material management and avatar optimization.
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class PoiyomiFinder : EditorWindow
{
private GameObject targetObject;
private List<GameObject> results = new List<GameObject>();
private Vector2 scrollPos;
@zuedev
zuedev / Analysis of Access Control Mechanisms in VRChat Avatar Distribution.md
Last active December 18, 2025 08:47
Analysis of Access Control Mechanisms in VRChat Avatar Distribution

Analysis of Access Control Mechanisms in VRChat Avatar Distribution

Date: October 26, 2025

Subject: Feasibility of "Whitelisting" and DRM for User-Generated Avatars

Abstract

This paper examines the technical feasibility of implementing "Whitelisting" or Digital Rights Management (DRM) systems within VRChat avatars. Specifically, it analyzes the efficacy of external Open Sound Control (OSC) applications acting as authentication keys, internal PIN systems, and platform-native permissions. The findings indicate that due to the client-side nature of avatar rendering and the lack of logic scripting (Udon) on avatars, true "whitelisting" is technically impossible to secure. The paper concludes that Server-Side Access Control (Private Uploads) remains the only robust method for limiting avatar usage.

@zuedev
zuedev / Speeding Up VRChat Development: Unity Accelerator Guide.md
Last active December 17, 2025 22:15
Setting up a Unity Accelerator (the modern Cache Server) is recommended for VRChat developers to drastically reduce asset re-import and platform switching times by caching processed assets locally on a server.

Speeding Up VRChat Development: Unity Accelerator Guide

Baking lightmaps and switching platforms between PC and Android (Quest) are the two biggest time-sinks in VRChat creation. Setting up a Unity Accelerator (the modern version of the Cache Server) allows you to offload asset processing and store multiple versions of the same asset simultaneously.

1. Why use a Cache Server for VRChat?

  • Instant Platform Swapping: Stop waiting 20 minutes to switch from PC to Quest. The server stores the compressed textures for both.
  • Faster Re-imports: If you delete your Library folder to fix a bug, the Accelerator re-populates it in seconds over your local network.
  • Multi-PC Sync: If you work with a team or use a desktop and a laptop, you only "process" an asset once; every other machine just downloads the result.
@zuedev
zuedev / restic-backup-to-b2.bash
Last active December 6, 2025 16:27
Automated Restic Backup to Backblaze B2 via Docker: A single Bash script to initialize a Restic repository (if needed) and run a full, excluded, read-only backup of a Linux host's root filesystem (`/`) to Backblaze B2 using the official Docker image and S3-compatible API.
#!/bin/bash
# --- 1. CONFIGURATION ---
# Replace these placeholders with your actual values.
# Backblaze B2 S3 Credentials
export AWS_ACCESS_KEY_ID="YOUR_B2_KEY_ID"
export AWS_SECRET_ACCESS_KEY="YOUR_B2_APPLICATION_KEY"
# Restic Repository Details
@zuedev
zuedev / Dockerfile
Created November 10, 2025 01:59
For OneDev: This Dockerfile downloads the image from the URL during build time and replaces `/app/site/assets/avatars/project.png` in the container.
FROM ubuntu:24.04 AS build
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://get.docker.com | sh
FROM ubuntu:24.04
ARG TARGETPLATFORM
ARG AVATAR_IMAGE_URL
COPY server-product/app /app
COPY server-product/docker/entrypoint-server.sh /root/bin/entrypoint.sh
@zuedev
zuedev / caddy.docker-compose.yaml
Last active January 26, 2026 17:20
Caddy docker-compose.yaml that writes an inline Caddyfile from an environment variable at runtime.
# Use a modern compose version
version: '3.8'
services:
caddy:
image: caddy:latest
restart: unless-stopped
ports:
# Port 80 for HTTP and ACME (Let's Encrypt) challenges
- "80:80"