{"id":14883,"date":"2025-07-22T09:50:37","date_gmt":"2025-07-22T00:50:37","guid":{"rendered":"https:\/\/www.quicca-plus.com\/svnavi\/?p=14883"},"modified":"2026-01-08T00:39:54","modified_gmt":"2026-01-07T15:39:54","slug":"minecraft-snapshot-server-auto-update-snapshots-json-cron-dl-beta-guide","status":"publish","type":"post","link":"https:\/\/www.quicca-plus.com\/svnavi\/minecraft-snapshot-server-auto-update-snapshots-json-cron-dl-beta-guide\/","title":{"rendered":"\u30de\u30a4\u30af\u30e9 Snapshot \u30b5\u30fc\u30d0\u30fc \u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\uff1asnapshots.json\u76e3\u8996\uff06cron DL\u30b9\u30af\u30ea\u30d7\u30c8\uff06\u03b2\u30c6\u30b9\u30c8\u5b8c\u5168\u30ac\u30a4\u30c9"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>2026\u5e741\u6708\u6700\u65b0\u60c5\u5831<\/strong> &#8211; \u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8 Snapshot\uff08\u958b\u767a\u7248\uff09\u30b5\u30fc\u30d0\u30fc\u306e\u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u8a2d\u5b9a\u304b\u3089\u904b\u7528\u307e\u3067\u3001\u624b\u9806\u3068\u30b5\u30f3\u30d7\u30eb\u3092\u307e\u3068\u3081\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2025\u5e74\u672b\u301c2026\u5e74\u306b\u304b\u3051\u3066\u3001Snapshot\u306e\u547d\u540d\u30fb\u914d\u5e03\u65b9\u91dd\u306b\u5909\u66f4\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002\u8a18\u4e8b\u5185\u306e\u76e3\u8996\u5bfe\u8c61\u306f\u5f93\u6765\u3069\u304a\u308a<strong>Mojang\u516c\u5f0f\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\uff08version_manifest.json\uff09<\/strong>\u3092\u524d\u63d0\u3068\u3057\u3064\u3064\u3001\u547d\u540d\u306e\u9055\u3044\uff08\u9031\u756a\u53f7\u5f62\u5f0f\u306a\u3069\uff09\u3092<strong>\u300c\u6587\u5b57\u5217\u3068\u3057\u3066\u6271\u3046\u300d<\/strong>\u8a2d\u8a08\u306b\u3059\u308b\u3053\u3068\u3067\u8ffd\u5f93\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305f\u3001\u8fd1\u5e74\u306eSnapshot\u3067\u306f<strong>\u8981\u6c42Java\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u66f4\u65b0\u3055\u308c\u308b\u30b1\u30fc\u30b9<\/strong>\u304c\u3042\u308a\u307e\u3059\u3002\u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u904b\u7528\u3067\u306f\u300cjar\u5dee\u3057\u66ff\u3048\u300d\u3060\u3051\u3067\u306a\u304f\u3001<strong>Java\u306e\u66f4\u65b0\uff08\u307e\u305f\u306f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u66f4\u65b0\uff09<\/strong>\u3082\u624b\u9806\u306b\u542b\u3081\u308b\u306e\u304c\u5b89\u5168\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/comparison.quicca-plus.com\/\"><img decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.quicca-plus.com\/svnavi\/wp-content\/uploads\/2025\/08\/\u30ec\u30f3\u30b5\u30d0\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af-3-1024x683.webp\" alt=\"\" class=\"wp-image-20863\" srcset=\"https:\/\/www.quicca-plus.com\/svnavi\/wp-content\/uploads\/2025\/08\/\u30ec\u30f3\u30b5\u30d0\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af-3-1024x683.webp 1024w, https:\/\/www.quicca-plus.com\/svnavi\/wp-content\/uploads\/2025\/08\/\u30ec\u30f3\u30b5\u30d0\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af-3-300x200.webp 300w, https:\/\/www.quicca-plus.com\/svnavi\/wp-content\/uploads\/2025\/08\/\u30ec\u30f3\u30b5\u30d0\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af-3-768x512.webp 768w, https:\/\/www.quicca-plus.com\/svnavi\/wp-content\/uploads\/2025\/08\/\u30ec\u30f3\u30b5\u30d0\u30a2\u30d5\u30a3\u30ea\u30a8\u30a4\u30c8\u30ea\u30f3\u30af-3.webp 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/comparison.quicca-plus.com\/\">\u8a3a\u65ad\u306f\u3053\u3061\u3089<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Snapshot\u30b5\u30fc\u30d0\u30fc\u3068\u306f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Snapshot\u306e\u57fa\u672c\u6982\u5ff5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Minecraft Snapshot\u306f\u3001\u6b63\u5f0f\u30ea\u30ea\u30fc\u30b9\u524d\u306e\u958b\u767a\u7248\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002\u65b0\u6a5f\u80fd\u306e\u30c6\u30b9\u30c8\u3084\u5c06\u6765\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306e\u5148\u884c\u4f53\u9a13\u304c\u53ef\u80fd\u3067\u3059\u304c\u3001<strong>\u4e0d\u5177\u5408\u3084\u4ed5\u69d8\u5909\u66f4\u304c\u524d\u63d0<\/strong>\u306e\u305f\u3081\u3001\u30b5\u30fc\u30d0\u30fc\u904b\u7528\u3067\u306f\u300c\u672c\u756a\u300d\u3068\u5207\u308a\u5206\u3051\u308b\u306e\u304c\u57fa\u672c\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30e1\u30ea\u30c3\u30c8<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u65b0\u6a5f\u80fd\u3092\u65e9\u671f\u306b\u4f53\u9a13\u53ef\u80fd<\/li>\n\n\n\n<li>\u30d0\u30b0\u5831\u544a\u3067\u958b\u767a\u306b\u8ca2\u732e<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u306e\u8a71\u984c\u6027<\/li>\n\n\n\n<li>\u30d7\u30e9\u30b0\u30a4\u30f3\uff0f\u30c7\u30fc\u30bf\u30d1\u30c3\u30af\u958b\u767a\u306e\u4e8b\u524d\u691c\u8a3c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6ce8\u610f\u70b9<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u4e0d\u5b89\u5b9a\u3067\u30d0\u30b0\u304c\u51fa\u308b\u53ef\u80fd\u6027<\/li>\n\n\n\n<li>\u30ef\u30fc\u30eb\u30c9\u7834\u640d\u306e\u30ea\u30b9\u30af<\/li>\n\n\n\n<li>\u4e92\u63db\u6027\u554f\u984c\uff08\u30d7\u30e9\u30b0\u30a4\u30f3\uff0fMOD\uff0f\u30c7\u30fc\u30bf\u30d1\u30c3\u30af\uff09<\/li>\n\n\n\n<li>\u672c\u756a\u74b0\u5883\u3067\u306e\u5e38\u7528\u306f\u975e\u63a8\u5968<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Snapshot\u30ea\u30ea\u30fc\u30b9\u306e\u8003\u3048\u65b9\uff082026\u5e741\u6708\u7248\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Snapshot\u306f\u300c\u6bce\u9031\u5fc5\u305a\u540c\u3058\u66dc\u65e5\u30fb\u540c\u3058\u6642\u523b\u300d\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u904e\u53bb\u306b\u306f\u6c34\u66dc\u65e5\u524d\u5f8c\u306b\u914d\u5e03\u3055\u308c\u308b\u3053\u3068\u304c\u591a\u3044\u6642\u671f\u304c\u3042\u308a\u307e\u3057\u305f\u304c\u3001<strong>\u914d\u5e03\u983b\u5ea6\u3084\u540d\u79f0\u30eb\u30fc\u30eb\u306f\u5909\u308f\u308a\u5f97\u308b<\/strong>\u305f\u3081\u3001\u904b\u7528\u4e0a\u306f<strong>\u914d\u5e03\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u4f9d\u5b58\u305b\u305a\u3001\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u66f4\u65b0\u3092\u691c\u77e5\u3057\u3066\u8ffd\u5f93<\/strong>\u3059\u308b\u306e\u304c\u5805\u5b9f\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">snapshots.json\u76e3\u8996\u30b7\u30b9\u30c6\u30e0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u91cd\u8981\uff1a\u76e3\u8996\u5bfe\u8c61\u306f\u300cversion_manifest.json\u300d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mojang\u516c\u5f0f\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\uff08<strong>version_manifest.json<\/strong>\uff09\u306b\u306f\u3001\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u7248\uff0fSnapshot\u7248\u306e\u8b58\u5225\u5b50\u3068\u3001\u5404\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u8a73\u7d30JSON\u3078\u306eURL\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u3053\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u3092\u5b9a\u671f\u7684\u306b\u76e3\u8996\u3059\u308b\u3053\u3068\u3067\u3001\u65b0\u3057\u3044Snapshot\u3092\u81ea\u52d5\u691c\u51fa\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># version_manifest.json \u306e\u69cb\u9020\u4f8b\uff08\u5024\u306f\u4f8b\uff09 { \"latest\": { \"release\": \"\uff08\u4f8b\uff09\", \"snapshot\": \"\uff08\u4f8b\uff09\" }, \"versions\": &#91; { \"id\": \"\uff08\u4f8b\uff09\", \"type\": \"snapshot\", \"url\": \"https:\/\/piston-meta.mojang.com\/v1\/packages\/...\", \"time\": \"2026-01-01T00:00:00+00:00\", \"releaseTime\": \"2026-01-01T00:00:00+00:00\" } ] }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30fc\u30d0\u30fc\u81ea\u52d5\u66f4\u65b0\u3067\u306f\u3001\u3053\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306e<strong>latest.snapshot<\/strong>\uff08\u307e\u305f\u306f\u7528\u9014\u306b\u5fdc\u3058\u3066versions\u914d\u5217\uff09\u3092\u53c2\u7167\u3057\u3066\u3001\u65b0\u3057\u3044Snapshot\u306e\u8a73\u7d30URL\u3092\u305f\u3069\u308a\u3001<strong>server jar\u306eURL\u3092\u53d6\u5f97\u3057\u3066\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/strong>\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Python\u76e3\u8996\u30b9\u30af\u30ea\u30d7\u30c8<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3 \"\"\" Minecraft Snapshot Monitor version_manifest.json \u3092\u76e3\u8996\u3057\u3066\u65b0\u3057\u3044 Snapshot \u3092\u81ea\u52d5\u691c\u51fa \"\"\" import os import time import subprocess from datetime import datetime import logging import requests logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=&#91; logging.FileHandler('\/var\/log\/minecraft-snapshot-monitor.log'), logging.StreamHandler() ] ) class SnapshotMonitor: def __init__(self): # \u76e3\u8996\u5bfe\u8c61\uff08\u516c\u5f0f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\uff09 self.manifest_url = \"https:\/\/piston-meta.mojang.com\/mc\/game\/version_manifest.json\" self.last_snapshot = self.load_last_snapshot() self.server_dir = \"\/opt\/minecraft-snapshot\" self.backup_dir = \"\/opt\/minecraft-snapshots-backup\" def load_last_snapshot(self): try: with open('\/tmp\/last_snapshot.txt', 'r', encoding='utf-8') as f: return f.read().strip() except FileNotFoundError: return None def save_last_snapshot(self, version): with open('\/tmp\/last_snapshot.txt', 'w', encoding='utf-8') as f: f.write(version) def check_new_snapshot(self): try: response = requests.get(self.manifest_url, timeout=10) response.raise_for_status() data = response.json() current_snapshot = data&#91;'latest']&#91;'snapshot'] if current_snapshot != self.last_snapshot: logging.info(f\"New snapshot detected: {current_snapshot}\") return current_snapshot, data return None, None except requests.RequestException as e: logging.error(f\"Failed to fetch version_manifest.json: {e}\") return None, None def download_snapshot(self, version_data): try: version_url = version_data&#91;'url'] version_response = requests.get(version_url, timeout=30) version_response.raise_for_status() version_info = version_response.json() server_url = version_info&#91;'downloads']&#91;'server']&#91;'url'] jar_response = requests.get(server_url, timeout=300) jar_response.raise_for_status() os.makedirs(self.server_dir, exist_ok=True) jar_path = os.path.join(self.server_dir, f\"server-{version_data&#91;'id']}.jar\") with open(jar_path, 'wb') as f: f.write(jar_response.content) logging.info(f\"Downloaded: {jar_path}\") return jar_path except Exception as e: logging.error(f\"Failed to download snapshot: {e}\") return None def backup_current_server(self): try: timestamp = datetime.now().strftime(\"%Y%m%d_%H%M%S\") backup_path = os.path.join(self.backup_dir, f\"backup_{timestamp}\") os.makedirs(backup_path, exist_ok=True) # \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u5bfe\u8c61\u3092\u8ffd\u52a0 for item in &#91;'world', 'server.properties', 'whitelist.json', 'ops.json', 'banned-players.json', 'banned-ips.json']: src = os.path.join(self.server_dir, item) if os.path.exists(src): subprocess.run(&#91;'cp', '-r', src, backup_path], check=True) logging.info(f\"Backup created: {backup_path}\") return backup_path except Exception as e: logging.error(f\"Backup failed: {e}\") return None def restart_server(self, jar_path): try: # systemd \u7ba1\u7406\u3092\u60f3\u5b9a subprocess.run(&#91;'systemctl', 'stop', 'minecraft-snapshot'], check=True) current_jar = os.path.join(self.server_dir, 'server.jar') if os.path.islink(current_jar) or os.path.exists(current_jar): os.remove(current_jar) os.symlink(jar_path, current_jar) subprocess.run(&#91;'systemctl', 'start', 'minecraft-snapshot'], check=True) logging.info(\"Server restarted successfully\") return True except Exception as e: logging.error(f\"Server restart failed: {e}\") return False def run_monitor(self): while True: try: new_snapshot, data = self.check_new_snapshot() if new_snapshot: version_data = next((v for v in data&#91;'versions'] if v&#91;'id'] == new_snapshot), None) if version_data: logging.info(f\"Processing new snapshot: {new_snapshot}\") self.backup_current_server() jar_path = self.download_snapshot(version_data) if jar_path: if self.restart_server(jar_path): self.save_last_snapshot(new_snapshot) logging.info(f\"Successfully updated to {new_snapshot}\") else: logging.error(\"Failed to restart server\") else: logging.error(\"Failed to download snapshot\") # 10\u5206\u5f85\u6a5f\uff08\u904b\u7528\u306b\u5fdc\u3058\u3066\u8abf\u6574\uff09 time.sleep(600) except KeyboardInterrupt: logging.info(\"Monitor stopped by user\") break except Exception as e: logging.error(f\"Monitor error: {e}\") time.sleep(60) if __name__ == \"__main__\": monitor = SnapshotMonitor() monitor.run_monitor()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u76e3\u8996\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u7279\u5fb4<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u81ea\u52d5\u5316\u6a5f\u80fd<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u65b0Snapshot\u81ea\u52d5\u691c\u51fa<\/li>\n\n\n\n<li>\u81ea\u52d5\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4f5c\u6210<\/li>\n\n\n\n<li>\u30b5\u30fc\u30d0\u30fc\u81ea\u52d5\u518d\u8d77\u52d5<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5b89\u5168\u6027\u6a5f\u80fd<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n\n\n\n<li>\u30ed\u30b0\u8a18\u9332<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4fdd\u8b77<\/li>\n\n\n\n<li>\u5fa9\u65e7\u624b\u9806\u306b\u7e4b\u3052\u3084\u3059\u3044\u69cb\u6210<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u95a2\u9023YouTube\u52d5\u753b\uff08\u65e5\u672c\u8a9e\uff09<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b66\u7fd2\u7528\u306b\u3001\u65e5\u672c\u8a9e\u306e\u89e3\u8aac\u52d5\u753b\u30ea\u30f3\u30af\uff08YouTube\uff09\u3092\u57cb\u3081\u8fbc\u307f\u307e\u3059\u3002WordPress\u5074\u306e\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u306f\u3001URL\u8cbc\u308a\u4ed8\u3051\u3060\u3051\u3067\u81ea\u52d5\u57cb\u3081\u8fbc\u307f\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"\u3010\u30de\u30a4\u30af\u30e9\u3011Java Edition\u3067\u30d9\u30fc\u30bf\u7248\u300c\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u300d\u3092\u5c0e\u5165\u3057\u3066\u65b0\u8981\u7d20\u3092\u4f53\u9a13\u3057\u3066\u307f\u3088\u3046\uff01\u3010\u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8\u3011\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Fek7M0fyg1Y?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"\u30101.19\u6700\u65b0\u3011Java\u7248\u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8\u30de\u30eb\u30c1\u30d7\u30ec\u30a4\u30b5\u30fc\u30d0\u30fc\u3092Ubuntu\u3067\u5efa\u3066\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\uff01\u203b\u672c\u683c\u7684\u306b\u59cb\u3081\u305f\u3044\u65b9 #\u30de\u30a4\u30af\u30e9 #1.19 #1.18 #\u30b5\u30fc\u30d0\u30fc #\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/n-cFPDMlWS0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"\u3010\u30de\u30a4\u30af\u30e9\u3011\u30de\u30eb\u30c1\u30d7\u30ec\u30a4\u304c\u3067\u304d\u308b\u30b5\u30fc\u30d0\u30fc\u306e\u7acb\u3066\u65b9\u3092\u52d5\u753b\u3067\u89e3\u8aac\uff01\u3010ConoHa\u516c\u5f0f\u3011\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/IjrVZ5gpADk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">cron DL\u30b9\u30af\u30ea\u30d7\u30c8\u8a2d\u5b9a<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">cron\u8a2d\u5b9a\u306e\u57fa\u672c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">cron\u3092\u4f7f\u7528\u3057\u3066Snapshot\u76e3\u8996\u3092\u81ea\u52d5\u5316\u3057\u307e\u3059\u3002\u914d\u5e03\u983b\u5ea6\u304c\u8aad\u307f\u306b\u304f\u3044\u3053\u3068\u3082\u3042\u308b\u305f\u3081\u3001\u904b\u7528\u3067\u306f\u300c\u5e38\u6642\u306f1\u6642\u9593\u3054\u3068\u300d\u300c\u66f4\u65b0\u304c\u6d3b\u767a\u306a\u671f\u9593\u306f10\u5206\u3054\u3068\u300d\u306a\u3069\u3001\u8ca0\u8377\u3068\u8ffd\u5f93\u901f\u5ea6\u306e\u30d0\u30e9\u30f3\u30b9\u3067\u6c7a\u3081\u308b\u306e\u304c\u304a\u3059\u3059\u3081\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># crontab\u8a2d\u5b9a\u4f8b # 10\u5206\u3054\u3068\uff08\u66f4\u65b0\u3092\u65e9\u3081\u306b\u62fe\u3044\u305f\u3044\u671f\u9593\uff09 *\/10 * * * * \/usr\/bin\/python3 \/opt\/scripts\/snapshot_monitor.py # 1\u6642\u9593\u3054\u3068\uff08\u901a\u5e38\u6642\uff09 0 * * * * \/usr\/bin\/python3 \/opt\/scripts\/snapshot_monitor.py # \u6bce\u65e5\u5348\u524d2\u6642\u306b\u30ed\u30b0\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3 0 2 * * * \/usr\/bin\/logrotate \/etc\/logrotate.d\/minecraft-snapshot # \u6bce\u9031\u65e5\u66dc\u65e5\u5348\u524d3\u6642\u306b\u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u524a\u9664 0 3 * * 0 \/opt\/scripts\/cleanup_backups.sh<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u9ad8\u5ea6\u306a\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b9\u30af\u30ea\u30d7\u30c8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8a18\u306fbash\u3067\u306e\u4f8b\u3067\u3059\u3002UA\u56fa\u5b9a\u3084\u30e9\u30f3\u30c0\u30e0\u5316\u306f\u74b0\u5883\u4f9d\u5b58\u3067\u3001\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u63a5\u7d9a\u5143\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u88fd\u54c1\u306e\u5f71\u97ff\u3067\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u4e0d\u5b89\u5b9a\u306a\u5834\u5408\u306b\u306e\u307f\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash \"\"\" Advanced Minecraft Snapshot Downloader \u30ea\u30c8\u30e9\u30a4\u6a5f\u80fd\u4ed8\u304d\uff08\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\uff09 \"\"\" MINECRAFT_DIR=\"\/opt\/minecraft-snapshot\" BACKUP_DIR=\"\/opt\/minecraft-snapshots-backup\" LOG_FILE=\"\/var\/log\/minecraft-snapshot-downloader.log\" MAX_RETRIES=3 RETRY_DELAY=5 log() { echo \"$(date '+%Y-%m-%d %H:%M:%S') - $1\" | tee -a \"$LOG_FILE\" } # \u5fc5\u8981\u306a\u5834\u5408\u306e\u307fUser-Agent\u3092\u4ed8\u3051\u308b\uff08\u74b0\u5883\u4f9d\u5b58\uff09 generate_user_agent() { local rand_num=$((1 + RANDOM % 5000)) echo \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.33 (KHTML, like Gecko) Chrome\/90.0.$rand_num.212 Safari\/537.33\" } get_snapshots_manifest() { local user_agent=$(generate_user_agent) local url=\"https:\/\/piston-meta.mojang.com\/mc\/game\/version_manifest.json\" log \"Fetching version manifest...\" for i in $(seq 1 $MAX_RETRIES); do if curl -s -H \"Accept-Encoding: identity\" \\ -A \"$user_agent\" \\ -o \"\/tmp\/version_manifest.json\" \\ \"$url\"; then log \"Successfully fetched version manifest\" return 0 else log \"Failed to fetch version manifest (attempt $i\/$MAX_RETRIES)\" sleep $RETRY_DELAY fi done log \"ERROR: Failed to fetch version manifest after $MAX_RETRIES attempts\" return 1 } get_latest_snapshot() { if &#91; ! -f \"\/tmp\/version_manifest.json\" ]; then log \"ERROR: version_manifest.json not found\" return 1 fi python3 -c \" import json with open('\/tmp\/version_manifest.json', 'r') as f: data = json.load(f) print(data&#91;'latest']&#91;'snapshot']) \" } get_version_info() { local version=\"$1\" python3 -c \" import json, sys version = sys.argv&#91;1] with open('\/tmp\/version_manifest.json', 'r') as f: data = json.load(f) for v in data&#91;'versions']: if v&#91;'id'] == version: print(v&#91;'url']) break else: sys.exit(1) \" \"$version\" } download_server_jar() { local version=\"$1\" local version_url=\"$2\" local user_agent=$(generate_user_agent) log \"Getting version info for $version...\" local version_info_file=\"\/tmp\/version_info_$version.json\" for i in $(seq 1 $MAX_RETRIES); do if curl -s -A \"$user_agent\" -o \"$version_info_file\" \"$version_url\"; then log \"Successfully fetched version info for $version\" break else log \"Failed to fetch version info (attempt $i\/$MAX_RETRIES)\" if &#91; $i -eq $MAX_RETRIES ]; then log \"ERROR: Failed to fetch version info after $MAX_RETRIES attempts\" return 1 fi sleep $RETRY_DELAY fi done local server_url=$(python3 -c \" import json with open('$version_info_file', 'r') as f: data = json.load(f) print(data&#91;'downloads']&#91;'server']&#91;'url']) \") if &#91; -z \"$server_url\" ]; then log \"ERROR: Server URL not found in version info\" return 1 fi log \"Downloading server jar for $version...\" mkdir -p \"$MINECRAFT_DIR\" local jar_file=\"$MINECRAFT_DIR\/server-$version.jar\" local temp_jar_file=\"\/tmp\/server-$version.jar\" for i in $(seq 1 $MAX_RETRIES); do if curl -A \"$user_agent\" -o \"$temp_jar_file\" \"$server_url\"; then local file_size=$(stat -c%s \"$temp_jar_file\") if &#91; \"$file_size\" -gt 1000000 ]; then mv \"$temp_jar_file\" \"$jar_file\" log \"Successfully downloaded server jar: $jar_file\" return 0 else log \"Downloaded file seems too small (${file_size} bytes)\" fi else log \"Failed to download server jar (attempt $i\/$MAX_RETRIES)\" fi if &#91; $i -lt $MAX_RETRIES ]; then sleep $RETRY_DELAY fi done log \"ERROR: Failed to download server jar after $MAX_RETRIES attempts\" return 1 } create_backup() { local version=\"$1\" local timestamp=$(date +%Y%m%d_%H%M%S) local backup_path=\"$BACKUP_DIR\/backup_${version}_${timestamp}\" log \"Creating backup: $backup_path\" mkdir -p \"$backup_path\" for item in world server.properties whitelist.json ops.json banned-players.json banned-ips.json server.jar; do if &#91; -e \"$MINECRAFT_DIR\/$item\" ]; then cp -r \"$MINECRAFT_DIR\/$item\" \"$backup_path\/\" fi done log \"Backup created successfully: $backup_path\" } update_server() { local version=\"$1\" local jar_file=\"$MINECRAFT_DIR\/server-$version.jar\" local current_jar=\"$MINECRAFT_DIR\/server.jar\" if &#91; ! -f \"$jar_file\" ]; then log \"ERROR: Server jar not found: $jar_file\" return 1 fi log \"Updating server to version $version...\" if systemctl is-active --quiet minecraft-snapshot; then log \"Stopping Minecraft server...\" systemctl stop minecraft-snapshot sleep 5 fi create_backup \"$version\" if &#91; -L \"$current_jar\" ] || &#91; -f \"$current_jar\" ]; then rm \"$current_jar\" fi ln -s \"$jar_file\" \"$current_jar\" log \"Starting Minecraft server...\" systemctl start minecraft-snapshot sleep 10 if systemctl is-active --quiet minecraft-snapshot; then log \"Server successfully updated to version $version\" return 0 else log \"ERROR: Server failed to start after update\" return 1 fi } save_last_version() { echo \"$1\" &gt; \"\/tmp\/last_snapshot_version.txt\" } load_last_version() { if &#91; -f \"\/tmp\/last_snapshot_version.txt\" ]; then cat \"\/tmp\/last_snapshot_version.txt\" else echo \"\" fi } main() { log \"Starting Minecraft Snapshot Downloader...\" if ! get_snapshots_manifest; then log \"ERROR: Failed to get version manifest\" exit 1 fi local latest_version=$(get_latest_snapshot) if &#91; -z \"$latest_version\" ]; then log \"ERROR: Failed to get latest snapshot version\" exit 1 fi log \"Latest snapshot version: $latest_version\" local last_version=$(load_last_version) if &#91; \"$latest_version\" = \"$last_version\" ]; then log \"No new snapshot version found\" exit 0 fi log \"New snapshot version detected: $latest_version (previous: $last_version)\" local version_url=$(get_version_info \"$latest_version\") if &#91; -z \"$version_url\" ]; then log \"ERROR: Failed to get version info URL\" exit 1 fi if download_server_jar \"$latest_version\" \"$version_url\"; then if update_server \"$latest_version\"; then save_last_version \"$latest_version\" log \"Successfully updated to snapshot version: $latest_version\" else log \"ERROR: Failed to update server\" exit 1 fi else log \"ERROR: Failed to download server jar\" exit 1 fi } main \"$@\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u03b2\u30c6\u30b9\u30c8\u74b0\u5883\u69cb\u7bc9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u74b0\u5883\u306e\u69cb\u6210<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Staging Server<\/strong>\uff1a\u672c\u756a\u3068\u540c\u69cb\u6210\u3067\u4e8b\u524d\u691c\u8a3c<\/li>\n\n\n\n<li><strong>Test Players<\/strong>\uff1a\u9650\u5b9a\u30e6\u30fc\u30b6\u30fc\u3067\u5b9f\u6a5f\u691c\u8a3c<\/li>\n\n\n\n<li><strong>Monitoring<\/strong>\uff1a\u30ed\u30b0\uff0f\u30e1\u30c8\u30ea\u30af\u30b9\uff0f\u30a2\u30e9\u30fc\u30c8<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Docker Compose\u306b\u3088\u308b\u30c6\u30b9\u30c8\u74b0\u5883<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># docker-compose.yml for Beta Testing version: '3.8' services: minecraft-snapshot-test: image: itzg\/minecraft-server container_name: minecraft-snapshot-test environment: EULA: \"TRUE\" TYPE: \"VANILLA\" VERSION: \"SNAPSHOT\" MEMORY: \"4G\" MOTD: \"\u00a76&#91;BETA] Snapshot Testing Server\" MAX_PLAYERS: 10 DIFFICULTY: \"easy\" GAMEMODE: \"survival\" PVP: \"false\" # \u6ce8\u610f\uff1a\u516c\u958b\u904b\u7528\u3067\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u8a8d\u8a3c\uff08ONLINE_MODE\uff09\u3092\u63a8\u5968 ONLINE_MODE: \"true\" ENABLE_COMMAND_BLOCK: \"true\" SPAWN_PROTECTION: 0 VIEW_DISTANCE: 16 SIMULATION_DISTANCE: 10 CHECK_VERSION: \"true\" FORCE_REDOWNLOAD: \"false\" ENABLE_RCON: \"true\" RCON_PASSWORD: \"test123\" RCON_PORT: 25575 DEBUG: \"true\" LOG_LEVEL: \"DEBUG\" ports: - \"25565:25565\" - \"25575:25575\" volumes: - .\/test-data:\/data - .\/test-logs:\/logs - .\/test-backups:\/backups restart: unless-stopped depends_on: - test-monitor test-monitor: image: prom\/prometheus container_name: test-monitor ports: - \"9090:9090\" volumes: - .\/prometheus.yml:\/etc\/prometheus\/prometheus.yml - .\/prometheus-data:\/prometheus restart: unless-stopped test-grafana: image: grafana\/grafana container_name: test-grafana ports: - \"3000:3000\" volumes: - .\/grafana-data:\/var\/lib\/grafana - .\/grafana-config:\/etc\/grafana environment: - GF_SECURITY_ADMIN_PASSWORD=admin restart: unless-stopped depends_on: - test-monitor test-backup: image: alpine:latest container_name: test-backup volumes: - .\/test-data:\/minecraft-data:ro - .\/test-backups:\/backups command: &gt; sh -c \" while true; do echo 'Creating backup...' timestamp=$$(date +%Y%m%d_%H%M%S) tar -czf \/backups\/snapshot_backup_$$timestamp.tar.gz -C \/minecraft-data . find \/backups -name '*.tar.gz' -mtime +7 -delete sleep 3600 done\" restart: unless-stopped test-logger: image: fluent\/fluent-bit container_name: test-logger volumes: - .\/test-logs:\/logs:ro - .\/fluent-bit.conf:\/fluent-bit\/etc\/fluent-bit.conf depends_on: - minecraft-snapshot-test restart: unless-stopped networks: default: name: minecraft-snapshot-test<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u81ea\u52d5\u30c6\u30b9\u30c8\u30b9\u30af\u30ea\u30d7\u30c8<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash \"\"\" Minecraft Snapshot Automatic Testing Script \u65b0\u3057\u3044Snapshot\u306e\u81ea\u52d5\u30c6\u30b9\u30c8\u3092\u5b9f\u884c \"\"\" TEST_SERVER=\"localhost:25565\" RCON_HOST=\"localhost\" RCON_PORT=\"25575\" RCON_PASSWORD=\"test123\" TEST_RESULTS_DIR=\"\/opt\/test-results\" WEBHOOK_URL=\"https:\/\/discord.com\/api\/webhooks\/...\" log_test_result() { local test_name=\"$1\" local result=\"$2\" local details=\"$3\" local timestamp=$(date '+%Y-%m-%d %H:%M:%S') echo \"&#91;$timestamp] $test_name: $result - $details\" &gt;&gt; \"$TEST_RESULTS_DIR\/test.log\" if &#91; \"$result\" = \"PASS\" ]; then echo \"&#91;OK] $test_name: PASS\" else echo \"&#91;NG] $test_name: FAIL - $details\" fi } rcon_command() { local command=\"$1\" echo \"$command\" | nc \"$RCON_HOST\" \"$RCON_PORT\" 2&gt;\/dev\/null } test_server_startup() { echo \"Testing server startup...\" if timeout 60 bash -c \"until nc -z $RCON_HOST $RCON_PORT; do sleep 1; done\"; then log_test_result \"SERVER_STARTUP\" \"PASS\" \"Server started successfully\" return 0 else log_test_result \"SERVER_STARTUP\" \"FAIL\" \"Server failed to start within 60 seconds\" return 1 fi } test_basic_commands() { echo \"Testing basic commands...\" local commands=(\"help\" \"list\" \"seed\" \"time query daytime\" \"weather query\") for cmd in \"${commands&#91;@]}\"; do local result=$(rcon_command \"$cmd\") if &#91; -n \"$result\" ]; then log_test_result \"COMMAND_$cmd\" \"PASS\" \"Command executed successfully\" else log_test_result \"COMMAND_$cmd\" \"FAIL\" \"Command failed or returned empty result\" fi done } test_world_generation() { echo \"Testing world generation...\" rcon_command \"gamemode creative TestPlayer\" rcon_command \"tp TestPlayer 0 100 0\" for i in {-5..5}; do for j in {-5..5}; do rcon_command \"forceload add $(($i * 16)) $(($j * 16))\" done done sleep 10 if &#91; -d \"\/opt\/minecraft-snapshot\/test-data\/world\" ]; then local world_size=$(du -s \/opt\/minecraft-snapshot\/test-data\/world | cut -f1) if &#91; \"$world_size\" -gt 1000 ]; then log_test_result \"WORLD_GENERATION\" \"PASS\" \"World generated successfully (${world_size}KB)\" else log_test_result \"WORLD_GENERATION\" \"FAIL\" \"World size too small (${world_size}KB)\" fi else log_test_result \"WORLD_GENERATION\" \"FAIL\" \"World directory not found\" fi } test_performance() { echo \"Testing performance...\" local tps_result=$(rcon_command \"debug start\" &amp;&amp; sleep 10 &amp;&amp; rcon_command \"debug stop\") local memory_usage=$(docker stats minecraft-snapshot-test --no-stream --format \"{{.MemUsage}}\") echo \"TPS: $tps_result\" &gt;&gt; \"$TEST_RESULTS_DIR\/test.log\" echo \"Memory: $memory_usage\" &gt;&gt; \"$TEST_RESULTS_DIR\/test.log\" } test_new_features() { echo \"Testing new features...\" local version=$(rcon_command \"version\" | tr -d '\\r') if &#91; -n \"$version\" ]; then log_test_result \"VERSION_CHECK\" \"PASS\" \"Version: $version\" else log_test_result \"VERSION_CHECK\" \"FAIL\" \"Could not determine version\" fi } send_discord_notification() { local status=\"$1\" local details=\"$2\" local payload=$(cat &lt;<eof {=\"\" \"content\":=\"\" \"&#91;snapshot=\"\" test]=\"\" $status=\"\" -=\"\" $details\"=\"\" }=\"\" eof=\"\" )=\"\" curl=\"\" -x=\"\" post=\"\" -h=\"\" \"content-type:=\"\" application=\"\" json\"=\"\" -d=\"\" \"$payload\"=\"\" \"$webhook_url\"=\"\">\/dev\/null 2&gt;&amp;1 } main() { echo \"Starting Minecraft Snapshot Tests...\" mkdir -p \"$TEST_RESULTS_DIR\" local failed_tests=0 test_server_startup || ((failed_tests++)) test_basic_commands || ((failed_tests++)) test_world_generation || ((failed_tests++)) test_performance || ((failed_tests++)) test_new_features || ((failed_tests++)) if &#91; $failed_tests -eq 0 ]; then send_discord_notification \"SUCCESS\" \"All tests passed\" else send_discord_notification \"FAILURE\" \"Some tests failed: $failed_tests\" fi exit $failed_tests } main \"$@\"<\/eof><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b8c\u5168\u81ea\u52d5\u5316\u30b7\u30b9\u30c6\u30e0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u81ea\u52d5\u5316\u30d5\u30ed\u30fc<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Snapshot\u76e3\u8996\uff08version_manifest.json\uff09<\/li>\n\n\n\n<li>\u81ea\u52d5\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\uff08server jar\uff09<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u74b0\u5883\u30c7\u30d7\u30ed\u30a4<\/li>\n\n\n\n<li>\u81ea\u52d5\u30c6\u30b9\u30c8\u5b9f\u884c\uff08\u8d77\u52d5\u78ba\u8a8d\uff0f\u57fa\u672c\u6a5f\u80fd\uff0f\u8ca0\u8377\uff09<\/li>\n\n\n\n<li>\u7d50\u679c\u901a\u77e5\uff08Discord\uff0fSlack\u7b49\uff09<\/li>\n\n\n\n<li>\u672c\u756a\u53cd\u6620\uff08\u30c6\u30b9\u30c8\u5408\u683c\u5f8c\u3001\u5fc5\u8981\u306a\u3089\u4eba\u9593\u306e\u627f\u8a8d\u3092\u631f\u3080\uff09<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u81ea\u52d5\u5316\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u66f4\u65b0\u524d\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u5fc5\u9808\uff08world\u3060\u3051\u3067\u306a\u304f\u904b\u7528\u30d5\u30a1\u30a4\u30eb\u3082\u5bfe\u8c61\u306b\u3059\u308b\uff09<\/li>\n\n\n\n<li>\u969c\u5bb3\u6642\u306e\u5fa9\u65e7\u624b\u9806\uff08\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\uff09\u3092\u7528\u610f\u3059\u308b<\/li>\n\n\n\n<li>Java\u8981\u4ef6\u304c\u4e0a\u304c\u308b\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u3001OS\u5074Java\u66f4\u65b0\uff0f\u30b3\u30f3\u30c6\u30ca\u66f4\u65b0\u3082\u904b\u7528\u306b\u542b\u3081\u308b<\/li>\n\n\n\n<li>\u7dca\u6025\u505c\u6b62\u624b\u6bb5\uff08systemctl stop \u7b49\uff09\u3092\u6574\u5099\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u3088\u304f\u3042\u308b\u554f\u984c\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\u554f\u984c\uff1a\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u5931\u6557\u3059\u308b<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u75c7\u72b6\uff1a\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306f\u53d6\u5f97\u3067\u304d\u308b\u304c\u3001server jar\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3059\u308b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ea\u30c8\u30e9\u30a4\u9593\u9694\u3092\u9577\u304f\u3059\u308b\uff08\u4f8b\uff1a10\u301c30\u79d2\uff09<\/li>\n\n\n\n<li>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3092\u898b\u76f4\u3059<\/li>\n\n\n\n<li>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\uff08DNS\uff0f\u30d7\u30ed\u30ad\u30b7\uff0f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u88fd\u54c1\uff09\u3092\u78ba\u8a8d\u3059\u308b<\/li>\n\n\n\n<li>\u53d6\u5f97\u5143URL\uff08piston-meta\uff0fpiston-data\uff09\u304c\u5909\u308f\u3063\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u554f\u984c\uff1a\u30b5\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3057\u306a\u3044<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u75c7\u72b6\uff1aSnapshot\u30b5\u30fc\u30d0\u30fcjar\u306e\u8d77\u52d5\u306b\u5931\u6557\u3059\u308b\u3001\u307e\u305f\u306f\u8d77\u52d5\u5f8c\u3059\u3050\u843d\u3061\u308b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Java\u30d0\u30fc\u30b8\u30e7\u30f3\u8981\u4ef6\u3092\u78ba\u8a8d\uff08Snapshot\u3067\u8981\u6c42\u304c\u5909\u308f\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff09<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u8a2d\u5b9a\uff08Xms\/Xmx\uff09\u3092\u78ba\u8a8d<\/li>\n\n\n\n<li>\u4e92\u63db\u6027\u306e\u306a\u3044\u30d7\u30e9\u30b0\u30a4\u30f3\uff0fMOD\uff0f\u30c7\u30fc\u30bf\u30d1\u30c3\u30af\u3092\u5916\u3057\u3066\u691c\u8a3c<\/li>\n\n\n\n<li>\u30ef\u30fc\u30eb\u30c9\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3001\u65b0\u898f\u30ef\u30fc\u30eb\u30c9\u3067\u3082\u8d77\u52d5\u78ba\u8a8d<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u554f\u984c\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u60aa\u3044<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u75c7\u72b6\uff1aTPS\u4f4e\u4e0b\u3001\u5fdc\u7b54\u9045\u5ef6\u3001\u30e9\u30b0\u304c\u767a\u751f\u3059\u308b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8996\u754c\u8ddd\u96e2\uff0f\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u8ddd\u96e2\u3092\u4e0b\u3052\u308b<\/li>\n\n\n\n<li>\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\uff0f\u30db\u30c3\u30d1\u30fc\u7b49\u306e\u8ca0\u8377\u8981\u56e0\u3092\u6e1b\u3089\u3059<\/li>\n\n\n\n<li>\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3001\u7570\u5e38\u306a\u30a8\u30e9\u30fc\u3084\u30b9\u30d1\u30e0\u51fa\u529b\u304c\u306a\u3044\u304b\u78ba\u8a8d<\/li>\n\n\n\n<li>CPU\u30fb\u30e1\u30e2\u30ea\u30fbI\/O\u306e\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u3092\u76e3\u8996\uff08Grafana\u7b49\uff09<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u8a3a\u65ad\u30b3\u30de\u30f3\u30c9\u96c6<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u30b7\u30b9\u30c6\u30e0\u8a3a\u65ad systemctl status minecraft-snapshot journalctl -u minecraft-snapshot -f # \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a3a\u65ad curl -I https:\/\/piston-meta.mojang.com\/mc\/game\/version_manifest.json nslookup piston-meta.mojang.com # \u30c7\u30a3\u30b9\u30af\u4f7f\u7528\u91cf\u78ba\u8a8d df -h \/opt\/minecraft-snapshot du -sh \/opt\/minecraft-snapshot\/* # \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u78ba\u8a8d free -h top -p $(pgrep java) # \u30d7\u30ed\u30bb\u30b9\u78ba\u8a8d ps aux | grep java lsof -i :25565 # \u30ed\u30b0\u78ba\u8a8d tail -f \/opt\/minecraft-snapshot\/logs\/latest.log grep ERROR \/opt\/minecraft-snapshot\/logs\/latest.log<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">JVM\u6700\u9069\u5316\u8a2d\u5b9a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Snapshot\u306f\u8981\u6c42Java\u304c\u5909\u308f\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u4e00\u822c\u7684\u306aG1GC\u7cfb\u306e\u4f8b\u3092\u63b2\u8f09\u3057\u307e\u3059\u304c\u3001<strong>\u5bfe\u8c61Snapshot\u306e\u8981\u6c42Java\u3068\u4e92\u63db<\/strong>\u3067\u3042\u308b\u3053\u3068\u3092\u524d\u63d0\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u63a8\u5968JVM\u30d1\u30e9\u30e1\u30fc\u30bf\u4f8b\uff08\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\uff09 java -Xms4G -Xmx4G \\ -XX:+UseG1GC \\ -XX:+ParallelRefProcEnabled \\ -XX:MaxGCPauseMillis=200 \\ -XX:+UnlockExperimentalVMOptions \\ -XX:+DisableExplicitGC \\ -XX:+AlwaysPreTouch \\ -XX:G1NewSizePercent=30 \\ -XX:G1MaxNewSizePercent=40 \\ -XX:G1HeapRegionSize=8M \\ -XX:G1ReservePercent=20 \\ -XX:G1HeapWastePercent=5 \\ -XX:G1MixedGCCountTarget=4 \\ -XX:InitiatingHeapOccupancyPercent=15 \\ -XX:G1MixedGCLiveThresholdPercent=90 \\ -XX:G1RSetUpdatingPauseTimePercent=5 \\ -XX:SurvivorRatio=32 \\ -XX:+PerfDisableSharedMem \\ -XX:MaxTenuringThreshold=1 \\ -jar server.jar nogui<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a\u6700\u9069\u5316<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># server.properties \u6700\u9069\u5316\u4f8b\uff08\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\uff09 view-distance=12 simulation-distance=8 max-tick-time=60000 spawn-protection=0 network-compression-threshold=64 max-players=20 difficulty=normal gamemode=survival hardcore=false pvp=true enable-command-block=true enable-query=false enable-rcon=true rcon.password=your_password rcon.port=25575 max-world-size=29999984 motd=Snapshot Server<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b7\u30b9\u30c6\u30e0\u8a2d\u5b9a\u6700\u9069\u5316<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/sysctl.conf\uff08\u4f8b\uff09 net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 4096 87380 134217728 net.ipv4.tcp_wmem = 4096 65536 134217728 net.ipv4.tcp_congestion_control = bbr net.core.netdev_max_backlog = 5000 vm.swappiness = 1 vm.dirty_ratio = 15 vm.dirty_background_ratio = 5 # \/etc\/security\/limits.conf\uff08\u4f8b\uff09 minecraft soft nofile 65535 minecraft hard nofile 65535 minecraft soft nproc 32768 minecraft hard nproc 32768<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u3059\u3059\u3081VPS\u30b5\u30fc\u30d3\u30b9\u6bd4\u8f03<\/h2>\n\n\n<p><iframe src=\"https:\/\/www.svnavi.net\/\" style=\"width:100%;min-height:720px;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden\" loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\"><\/iframe><\/p>\n\n\n<h3 class=\"wp-block-heading\">Snapshot\u30b5\u30fc\u30d0\u30fc\u5411\u3051VPS\u9078\u3073\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Snapshot\u30b5\u30fc\u30d0\u30fc\u306f\u983b\u7e41\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3068\u691c\u8a3c\u304c\u524d\u63d0\u306b\u306a\u308a\u3084\u3059\u3044\u305f\u3081\u3001\u4ee5\u4e0b\u3092\u91cd\u8996\u3057\u3066\u9078\u3076\u3068\u904b\u7528\u304c\u5b89\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9ad8\u901f\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\uff08\u66f4\u65b0\u30fb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u983b\u7e41\uff09<\/li>\n\n\n\n<li>\u5341\u5206\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\uff08\u8907\u6570\u30d0\u30fc\u30b8\u30e7\u30f3\u4fdd\u5b58\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\uff09<\/li>\n\n\n\n<li>\u8ca0\u8377\u5909\u52d5\u306b\u5bfe\u5fdc\u3067\u304d\u308b\u30ea\u30bd\u30fc\u30b9\uff08CPU\u30fb\u30e1\u30e2\u30ea\uff09<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u904b\u7528\u304c\u3057\u3084\u3059\u3044\uff08\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3001\u5897\u8a2d\u3001\u5916\u90e8\u4fdd\u5b58\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a8\u5968\u30b9\u30da\u30c3\u30af\u76ee\u5b89\uff1aCPU 4\u30b3\u30a2\u4ee5\u4e0a\u3001\u30e1\u30e2\u30ea 8GB\u4ee5\u4e0a\u3001SSD 100GB\u4ee5\u4e0a\u3001\u56de\u7dda 1Gbps\u7d1a\uff08\u904b\u7528\u898f\u6a21\u306b\u3088\u308a\u8abf\u6574\uff09\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">VPS\u30b5\u30fc\u30d3\u30b9\u6bd4\u8f03\uff082026\u5e741\u6708\u6642\u70b9\uff09<\/h3>\n\n\n\n<div> <h3>XServer VPS for Game<\/h3> <p>\u30b2\u30fc\u30e0\u7279\u5316\u578bVPS\u3067\u3001\u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8\u306e\u81ea\u52d5\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6a5f\u80fd\u3084\u7ba1\u7406\u30d1\u30cd\u30eb\u304c\u5145\u5b9f\u3002Snapshot\u30b5\u30fc\u30d0\u30fc\u3067\u3082\u3001\u691c\u8a3c\u74b0\u5883\u3068\u3057\u3066\u4f7f\u3044\u3084\u3059\u3044\u69cb\u6210\u3067\u3059\u3002<\/p> <p><strong>\u6599\u91d1\u76ee\u5b89\uff1a<\/strong>\u30ad\u30e3\u30f3\u30da\u30fc\u30f3\u7b49\u306b\u3088\u308a\u5909\u52d5\uff08\u516c\u5f0f\u3067\u300c\u5b9f\u8cea\u6708\u984d\u300d\u8868\u8a18\u3042\u308a\uff09\u3002<\/p> <p><strong>\u30dd\u30a4\u30f3\u30c8\uff1a<\/strong>\u63d0\u4f9b\u30d7\u30e9\u30f3\u306f\u8907\u6570\uff082GB \/ 4GB \/ 8GB \/ 16GB \/ 32GB \/ 64GB \u306a\u3069\uff09<\/p> <p> <a href=\"https:\/\/px.a8.net\/svt\/ejp?a8mat=3TAVQC+WRHFE+CO4+2NBPO2\" target=\"_blank\" rel=\"noopener\">\u8a73\u7d30\u3092\u898b\u308b<\/a> <\/p> <\/div>\n\n\n\n<div> <h3>ConoHa for GAME<\/h3> <p>\u9ad8\u901fNVMe SSD\u3068\u30b2\u30fc\u30e0\u7528\u9014\u306e\u5c0e\u7dda\u304c\u6574\u3063\u305f\u30b5\u30fc\u30d3\u30b9\u3002\u30d7\u30e9\u30f3\u4fa1\u683c\u306f\u30ad\u30e3\u30f3\u30da\u30fc\u30f3\u9069\u7528\u3067\u5909\u52d5\u3057\u307e\u3059\u304c\u3001\u516c\u5f0f\u6599\u91d1\u8868\u304c\u898b\u3084\u3059\u304f\u3001\u77ed\u671f\u691c\u8a3c\u306b\u3082\u5411\u304d\u307e\u3059\u3002<\/p> <p><strong>\u4f8b\uff08\u516c\u5f0f\u8868\u793a\u306e\u4e00\u90e8\uff09\uff1a<\/strong>2GB\uff08CPU 3\u30b3\u30a2\uff0fNVMe SSD 100GB\uff09\u30014GB\uff08CPU 4\u30b3\u30a2\uff0fNVMe SSD 100GB\uff09\u306a\u3069<\/p> <p> <a href=\"https:\/\/px.a8.net\/svt\/ejp?a8mat=3T4BO6+F6KKHM+50+7A3FXD\" target=\"_blank\" rel=\"noopener\">\u8a73\u7d30\u3092\u898b\u308b<\/a> <\/p> <\/div>\n\n\n\n<div> <h3>\u3055\u304f\u3089 VPS<\/h3> <p>\u8001\u8217\u306e\u5b89\u5b9a\u6027\u3068\u9078\u3079\u308b\u30ea\u30fc\u30b8\u30e7\u30f3\u304c\u7279\u5fb4\u3002\u5c0f\u898f\u6a21\u306a\u691c\u8a3c\u7528\u3084\u5468\u8fba\u30c4\u30fc\u30eb\uff08\u76e3\u8996\u30fb\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\uff09\u7528\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u904b\u7528\u3082\u3067\u304d\u307e\u3059\u3002<\/p> <p><strong>\u4f8b\uff08512MB\uff09\uff1a<\/strong>CPU \u4eee\u60f31Core\uff0f\u30e1\u30e2\u30ea 512MB\uff0fSSD 25GB\uff08\u5909\u66f4\u53ef\uff09<\/p> <p> <a href=\"https:\/\/px.a8.net\/svt\/ejp?a8mat=1TYVDW+47TYP6+D8Y+CC3NL\" target=\"_blank\" rel=\"noopener\">\u8a73\u7d30\u3092\u898b\u308b<\/a> <\/p> <\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Snapshot\u30b5\u30fc\u30d0\u30fc\u904b\u7528\u306e\u30b3\u30c4<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b9a\u671f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u81ea\u52d5\u5316\uff08\u66f4\u65b0\u524d\uff0b\u5b9a\u671f\uff09<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u306e\u5206\u96e2<\/li>\n\n\n\n<li>\u76e3\u8996\u3068\u30a2\u30e9\u30fc\u30c8\uff08\u843d\u3061\u305f\u3089\u901a\u77e5\uff09<\/li>\n\n\n\n<li>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u624b\u9806\u3092\u624b\u9806\u66f8\u5316<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u514d\u8cac\u4e8b\u9805<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u203b\u672c\u8a18\u4e8b\u306f2026\u5e741\u6708\u6642\u70b9\u3067\u78ba\u8a8d\u3067\u304d\u305f\u60c5\u5831\u306b\u57fa\u3065\u3044\u3066\u57f7\u7b46\u3057\u3066\u3044\u307e\u3059\u3002Snapshot\u306f\u4ed5\u69d8\u5909\u66f4\u304c\u983b\u7e41\u306b\u8d77\u3053\u308b\u305f\u3081\u3001\u904b\u7528\u524d\u306b\u5fc5\u305a\u516c\u5f0f\u60c5\u5831\uff08\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\uff0f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\uff0f\u30e9\u30f3\u30c1\u30e3\u30fc\u8868\u793a\uff09\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u95a2\u9023\u30ea\u30f3\u30af<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/minecraft.net\" target=\"_blank\" rel=\"noopener\">Minecraft \u516c\u5f0f\u30b5\u30a4\u30c8<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/minecraft.wiki\" target=\"_blank\" rel=\"noopener\">Minecraft Wiki<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/itzg\/docker-minecraft-server\" target=\"_blank\" rel=\"noopener\">Docker Minecraft Server\uff08itzg\uff09<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u30bf\u30b0<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8<\/li>\n\n\n\n<li>Snapshot<\/li>\n\n\n\n<li>\u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8<\/li>\n\n\n\n<li>VPS<\/li>\n\n\n\n<li>\u30b5\u30fc\u30d0\u30fc\u904b\u7528<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>2026\u5e741\u6708\u6700\u65b0\u60c5\u5831 &#8211; \u30de\u30a4\u30f3\u30af\u30e9\u30d5\u30c8 Snapshot\uff08\u958b\u767a\u7248\uff09\u30b5\u30fc\u30d0\u30fc\u306e\u81ea\u52d5\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u8a2d\u5b9a\u304b\u3089\u904b\u7528\u307e\u3067\u3001\u624b\u9806\u3068\u30b5\u30f3\u30d7\u30eb\u3092\u307e\u3068\u3081\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002 2025\u5e74\u672b\u301c2026\u5e74\u306b\u304b\u3051\u3066\u3001Snapshot\u306e\u547d\u540d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23766,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"swell_btn_cv_data":"","footnotes":""},"categories":[1],"tags":[446,983,206,979,981,982,212,168,130,980],"class_list":["post-14883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-cron","tag-dl","tag-minecraft","tag-snapshot","tag-snapshots-json","tag-982","tag-212","tag-168","tag-130","tag-980"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/posts\/14883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/comments?post=14883"}],"version-history":[{"count":5,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/posts\/14883\/revisions"}],"predecessor-version":[{"id":23768,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/posts\/14883\/revisions\/23768"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/media\/23766"}],"wp:attachment":[{"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/media?parent=14883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/categories?post=14883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.quicca-plus.com\/svnavi\/wp-json\/wp\/v2\/tags?post=14883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}