{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/436",
    "result": {"data":{"issuesJson":{"id":"b9683483-acb2-5098-8905-f15b543a22bc","title":"mtlynch/picoshare: 可建立文件共享服务，支持多种类型，部署简单，易于使用","number":436,"bodyHTML":"<div align=\"center\" dir=\"auto\">\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a><br><br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"right\">Repos</th>\n<th align=\"left\"><a href=\"https://github.com/mtlynch/picoshare\">mtlynch/picoshare</a></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><strong>Views</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/59025708c39277770f2dae426678dad640ceb197a27c59f195f0ef6060507e2c/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f6d746c796e63682f7069636f73686172652e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/mtlynch/picoshare.svg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Stars</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/2ba6771dc6a9e091fe9415b8189648a624e5411489de9b68516c07788b0d8795/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d746c796e63682f7069636f73686172653f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/mtlynch/picoshare?color=f2f08d&amp;logo=Undertale&amp;logoColor=eb4630\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Forks</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/e7c7f332d54dd52d97e345691ca0b0f7fc01a683c06cdf919306818950162bc7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6d746c796e63682f7069636f73686172653f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/mtlynch/picoshare?color=ba86eb&amp;logo=Handshake&amp;logoColor=ea6aa6\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>License</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/0c93ca71e73bb599dbfbd81eb5bbb82f63a427dc55ced5d8a7de2d4025f1f1c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c2d4e4f4e452d626c75653f6c6f676f3d756e6c6963656e7365\" alt=\"license\" data-canonical-src=\"https://img.shields.io/badge/L-NONE-blue?logo=unlicense\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>UpdatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/7ad0d830776ffbff1aae84b34808499501d5c194252fc8d5a03cd0306049e67e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d746c796e63682f7069636f73686172653f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/mtlynch/picoshare?display_timestamp=committer&amp;logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=UpdatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>CreatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/a806cc28eb633ac50fbd6e6fe56de56244d268fca4d6e3bdc980a966d0514b61/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f6d746c796e63682f7069636f73686172653f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/mtlynch/picoshare?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=CreatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<a href=\"https://github.com/opsre/awesome-ops\">\n</a><p dir=\"auto\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b964a36ea4078c39f603d46a29436371c7541a2f26e0228d7b21b9d9805b43d3/68747470733a2f2f736f6369616c6966792e6769742e63692f6f707372652f617765736f6d652d6f70732f696d6167653f6465736372697074696f6e3d3126666f6e743d42697474657226666f726b733d31266973737565733d31266c616e67756167653d31266c6f676f3d6874747073253341253246253246617661746172732e67697468756275736572636f6e74656e742e636f6d25324675253246313838353638303230266e616d653d31266f776e65723d31267061747465726e3d436972637569742b426f6172642670756c6c733d31267374617267617a6572733d31267468656d653d4c69676874\" alt=\"\" data-canonical-src=\"https://socialify.git.ci/opsre/awesome-ops/image?description=1&amp;font=Bitter&amp;forks=1&amp;issues=1&amp;language=1&amp;logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F188568020&amp;name=1&amp;owner=1&amp;pattern=Circuit+Board&amp;pulls=1&amp;stargazers=1&amp;theme=Light\" style=\"max-width: 100%;\"></a></p>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a>\n</div>\n<h1 dir=\"auto\">PicoShare</h1>\n<p dir=\"auto\"><a href=\"https://circleci.com/gh/mtlynch/picoshare\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/d2ea2ed70bb99b33af28d27b26a14e4685f0773fc20f917651a9cb2a87c41e04/68747470733a2f2f636972636c6563692e636f6d2f67682f6d746c796e63682f7069636f73686172652e7376673f7374796c653d737667\" alt=\"CircleCI\" data-canonical-src=\"https://circleci.com/gh/mtlynch/picoshare.svg?style=svg\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://hub.docker.com/r/mtlynch/picoshare/\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/158e892bddf1866196b3e81c49bec8a03d7ecd6cbe64423198d328b26c1a3338/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f762f6d746c796e63682f7069636f73686172653f736f72743d73656d766572266d61784167653d3836343030\" alt=\"Docker Version\" data-canonical-src=\"https://img.shields.io/docker/v/mtlynch/picoshare?sort=semver&amp;maxAge=86400\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://hub.docker.com/r/mtlynch/picoshare/\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/cf6f50e3388adc359dcac2b0ff3959310522617914ca6e4a531fd3a7ec7be0a1/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6d746c796e63682f7069636f73686172652e7376673f6d61784167653d363034383030\" alt=\"Docker Pulls\" data-canonical-src=\"https://img.shields.io/docker/pulls/mtlynch/picoshare.svg?maxAge=604800\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/mtlynch/picoshare/commits/master\"><img src=\"https://camo.githubusercontent.com/c9fc8022a55fe0d7586047be55e9e434d7560262be57186afa3e25c69bf89a7c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f6d746c796e63682f7069636f7368617265\" alt=\"GitHub commit activity\" data-canonical-src=\"https://img.shields.io/github/commit-activity/m/mtlynch/picoshare\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/mtlynch/picoshare/commits/master\"><img src=\"https://camo.githubusercontent.com/8c4f159059bcb3341b303178cbffa557635e9cd5ff0d439f6d8732eff6cef964/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d746c796e63682f7069636f7368617265\" alt=\"GitHub last commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/mtlynch/picoshare\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://github.com/mtlynch/picoshare/graphs/contributors\"><img src=\"https://camo.githubusercontent.com/b62b07ffd397a08587b359a7357c7c222cba8dac9eb185b3517f99a16d6d7a77/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6d746c796e63682f7069636f7368617265\" alt=\"Contributors\" data-canonical-src=\"https://img.shields.io/github/contributors/mtlynch/picoshare\" style=\"max-width: 100%;\"></a><br>\n<a href=\"LICENSE\"><img src=\"https://camo.githubusercontent.com/d15788fc17bcc918ad98a22a4c3cd6f11312510a7cf2177b6e170057bd7f528e/687474703a2f2f696d672e736869656c64732e696f2f3a6c6963656e73652d6167706c2d626c75652e7376673f7374796c653d666c61742d737175617265\" alt=\"License\" data-canonical-src=\"http://img.shields.io/:license-agpl-blue.svg?style=flat-square\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">Overview</h2>\n<p dir=\"auto\">PicoShare is a minimalist service that allows you to share files easily.</p>\n<ul dir=\"auto\">\n<li><a href=\"https://demo.pico.rocks\" rel=\"nofollow\">Live demo</a></li>\n</ul>\n<p dir=\"auto\"><a href=\"https://raw.githubusercontent.com/mtlynch/picoshare/master/docs/readme-assets/demo-full.gif\" rel=\"nofollow\"><img src=\"https://raw.githubusercontent.com/mtlynch/picoshare/master/docs/readme-assets/demo.gif\" alt=\"PicoShare demo\" data-animated-image=\"\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">Why PicoShare?</h2>\n<p dir=\"auto\">There are a million services for sharing files, but none of them are quite like PicoShare. Here are PicoShare's advantages:</p>\n<ul dir=\"auto\">\n<li><strong>Direct download links</strong>: PicoShare gives you a direct download link you can share with anyone. They can view or download the file with no ads or signups.</li>\n<li><strong>No file restrictions</strong>: Unlike sites like imgur, Vimeo, or SoundCloud that only allow you to share specific types of files, PicoShare lets you share any file of any size.</li>\n<li><strong>No resizing/re-encoding</strong>: If you upload media like images, video, or audio, PicoShare never forces you to wait on re-encoding. You get a direct download link as soon as you upload the file, and PicoShare never resizes or re-encodes your file.</li>\n</ul>\n<h2 dir=\"auto\">Run PicoShare</h2>\n<h3 dir=\"auto\">From source</h3>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"PS_SHARED_SECRET=somesecretpass PORT=4001 \\\n  go run cmd/picoshare/main.go\"><pre class=\"notranslate\">PS_SHARED_SECRET=somesecretpass PORT=4001 \\\n  go run cmd/picoshare/main.go</pre></div>\n<h3 dir=\"auto\">From Docker</h3>\n<p dir=\"auto\">To run PicoShare within a Docker container, mount a volume from your local system to store the PicoShare sqlite database.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"docker run \\\n  --env &quot;PORT=4001&quot; \\\n  --env &quot;PS_SHARED_SECRET=somesecretpass&quot; \\\n  --publish 4001:4001/tcp \\\n  --volume &quot;${PWD}/data:/data&quot; \\\n  --name picoshare \\\n  mtlynch/picoshare\"><pre class=\"notranslate\">docker run \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>PORT=4001<span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>PS_SHARED_SECRET=somesecretpass<span class=\"pl-pds\">\"</span></span> \\\n  --publish 4001:4001/tcp \\\n  --volume <span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-smi\">${PWD}</span>/data:/data<span class=\"pl-pds\">\"</span></span> \\\n  --name picoshare \\\n  mtlynch/picoshare</pre></div>\n<h3 dir=\"auto\">From Docker + cloud data replication</h3>\n<p dir=\"auto\">If you specify settings for a <a href=\"https://litestream.io/\" rel=\"nofollow\">Litestream</a>-compatible cloud storage location, PicoShare will automatically replicate your data.</p>\n<p dir=\"auto\">You can kill the container and start it later, and PicoShare will restore your data from the cloud storage location and continue as if there was no interruption.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"PORT=4001\nPS_SHARED_SECRET=&quot;somesecretpass&quot;\nLITESTREAM_BUCKET=YOUR-LITESTREAM-BUCKET\nLITESTREAM_ENDPOINT=YOUR-LITESTREAM-ENDPOINT\nLITESTREAM_ACCESS_KEY_ID=YOUR-ACCESS-ID\nLITESTREAM_SECRET_ACCESS_KEY=YOUR-SECRET-ACCESS-KEY\n\ndocker run \\\n  --publish &quot;${PORT}:${PORT}/tcp&quot; \\\n  --env &quot;PORT=${PORT}&quot; \\\n  --env &quot;PS_SHARED_SECRET=${PS_SHARED_SECRET}&quot; \\\n  --env &quot;LITESTREAM_ACCESS_KEY_ID=${LITESTREAM_ACCESS_KEY_ID}&quot; \\\n  --env &quot;LITESTREAM_SECRET_ACCESS_KEY=${LITESTREAM_SECRET_ACCESS_KEY}&quot; \\\n  --env &quot;LITESTREAM_BUCKET=${LITESTREAM_BUCKET}&quot; \\\n  --env &quot;LITESTREAM_ENDPOINT=${LITESTREAM_ENDPOINT}&quot; \\\n  --name picoshare \\\n  mtlynch/picoshare\"><pre class=\"notranslate\">PORT=4001\nPS_SHARED_SECRET=<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>somesecretpass<span class=\"pl-pds\">\"</span></span>\nLITESTREAM_BUCKET=YOUR-LITESTREAM-BUCKET\nLITESTREAM_ENDPOINT=YOUR-LITESTREAM-ENDPOINT\nLITESTREAM_ACCESS_KEY_ID=YOUR-ACCESS-ID\nLITESTREAM_SECRET_ACCESS_KEY=YOUR-SECRET-ACCESS-KEY\n\ndocker run \\\n  --publish <span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-smi\">${PORT}</span>:<span class=\"pl-smi\">${PORT}</span>/tcp<span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>PORT=<span class=\"pl-smi\">${PORT}</span><span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>PS_SHARED_SECRET=<span class=\"pl-smi\">${PS_SHARED_SECRET}</span><span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>LITESTREAM_ACCESS_KEY_ID=<span class=\"pl-smi\">${LITESTREAM_ACCESS_KEY_ID}</span><span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>LITESTREAM_SECRET_ACCESS_KEY=<span class=\"pl-smi\">${LITESTREAM_SECRET_ACCESS_KEY}</span><span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>LITESTREAM_BUCKET=<span class=\"pl-smi\">${LITESTREAM_BUCKET}</span><span class=\"pl-pds\">\"</span></span> \\\n  --env <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>LITESTREAM_ENDPOINT=<span class=\"pl-smi\">${LITESTREAM_ENDPOINT}</span><span class=\"pl-pds\">\"</span></span> \\\n  --name picoshare \\\n  mtlynch/picoshare</pre></div>\n<p dir=\"auto\">Notes:</p>\n<ul dir=\"auto\">\n<li>Only run one Docker container for each Litestream location.\n<ul dir=\"auto\">\n<li>PicoShare can't sync writes across multiple instances.</li>\n</ul>\n</li>\n</ul>\n<h3 dir=\"auto\">Using Docker Compose</h3>\n<p dir=\"auto\">To run PicoShare under docker-compose, copy the following to a file called <code class=\"notranslate\">docker-compose.yml</code> and then run <code class=\"notranslate\">docker-compose up</code>.</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"version: &quot;3.2&quot;\nservices:\n  picoshare:\n    image: mtlynch/picoshare\n    environment:\n      - PORT=4001\n      - PS_SHARED_SECRET=dummypass # Change to any password\n    ports:\n      - 4001:4001\n    command: -db /data/store.db\n    volumes:\n      - ./data:/data\"><pre class=\"notranslate\"><span class=\"pl-ent\">version</span>: <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>3.2<span class=\"pl-pds\">\"</span></span>\n<span class=\"pl-ent\">services</span>:\n  <span class=\"pl-ent\">picoshare</span>:\n    <span class=\"pl-ent\">image</span>: <span class=\"pl-s\">mtlynch/picoshare</span>\n    <span class=\"pl-ent\">environment</span>:\n      - <span class=\"pl-s\">PORT=4001</span>\n      - <span class=\"pl-s\">PS_SHARED_SECRET=dummypass </span><span class=\"pl-c\"><span class=\"pl-c\">#</span> Change to any password</span>\n    <span class=\"pl-ent\">ports</span>:\n      - <span class=\"pl-c1\">4001:4001</span>\n    <span class=\"pl-ent\">command</span>: <span class=\"pl-s\">-db /data/store.db</span>\n    <span class=\"pl-ent\">volumes</span>:\n      - <span class=\"pl-s\">./data:/data</span></pre></div>\n<h2 dir=\"auto\">Parameters</h2>\n<h3 dir=\"auto\">Command-line flags</h3>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Flag</th>\n<th>Meaning</th>\n<th>Default Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"notranslate\">-db</code></td>\n<td>Path to SQLite database</td>\n<td><code class=\"notranslate\">\"data/store.db\"</code></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h3 dir=\"auto\">Environment variables</h3>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"notranslate\">PORT</code></td>\n<td>TCP port on which to listen for HTTP connections (defaults to 4001).</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">PS_BEHIND_PROXY</code></td>\n<td>Set to <code class=\"notranslate\">\"true\"</code> for better logging when PicoShare is running behind a reverse proxy.</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">PS_SHARED_SECRET</code></td>\n<td>(required) Specifies a passphrase for the admin user to log in to PicoShare.</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h3 dir=\"auto\">Docker environment variables</h3>\n<p dir=\"auto\">You can adjust behavior of the Docker container by specifying these Docker-specific variables with <code class=\"notranslate\">docker run -e</code>:</p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Environment Variable</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"notranslate\">LITESTREAM_BUCKET</code></td>\n<td>Litestream-compatible cloud storage bucket where Litestream should replicate data.</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">LITESTREAM_ENDPOINT</code></td>\n<td>Litestream-compatible cloud storage endpoint where Litestream should replicate data.</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">LITESTREAM_ACCESS_KEY_ID</code></td>\n<td>Litestream-compatible cloud storage access key ID to the bucket where you want to replicate data.</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">LITESTREAM_SECRET_ACCESS_KEY</code></td>\n<td>Litestream-compatible cloud storage secret access key to the bucket where you want to replicate data.</td>\n</tr>\n<tr>\n<td><code class=\"notranslate\">LITESTREAM_RETENTION</code></td>\n<td>The amount of time Litestream snapshots &amp; WAL files will be kept (defaults to 72h).</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h3 dir=\"auto\">Docker build args</h3>\n<p dir=\"auto\">If you rebuild the Docker image from source, you can adjust the build behavior with <code class=\"notranslate\">docker build --build-arg</code>:</p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th>Build Arg</th>\n<th>Meaning</th>\n<th>Default Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"notranslate\">litestream_version</code></td>\n<td>Version of <a href=\"https://litestream.io/\" rel=\"nofollow\">Litestream</a> to use for data replication</td>\n<td><code class=\"notranslate\">0.3.9</code></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h2 dir=\"auto\">PicoShare's scope and future</h2>\n<p dir=\"auto\">PicoShare is maintained by Michael Lynch as a hobby project.</p>\n<p dir=\"auto\">Due to time limitations, I keep PicoShare's scope limited to only the features that fit into my workflows. That unfortunately means that I sometimes reject proposals or contributions for perfectly good features. It's nothing against those features, but I only have bandwidth to maintain features that I use.</p>\n<h2 dir=\"auto\">Deployment</h2>\n<p dir=\"auto\">PicoShare is easy to deploy to cloud hosting platforms:</p>\n<ul dir=\"auto\">\n<li><a href=\"docs/deployment/fly.io.md\">fly.io</a></li>\n</ul>\n<h2 dir=\"auto\">Tips and tricks</h2>\n<h3 dir=\"auto\">Reclaiming reserved database space</h3>\n<p dir=\"auto\">Some users find it surprising that when they delete files from PicoShare, they don't gain back free space on their filesystem.</p>\n<p dir=\"auto\">When you delete files, PicoShare reserves the space for future uploads. If you'd like to reduce PicoShare's usage of your filesystem, you can manually force PicoShare to give up the space by performing the following steps:</p>\n<ol dir=\"auto\">\n<li>Shut down PicoShare.</li>\n<li>Run <code class=\"notranslate\">sqlite3 data/store.db 'VACUUM'</code> where <code class=\"notranslate\">data/store.db</code> is the path to your PicoShare database.</li>\n</ol>\n<p dir=\"auto\">You should find that the <code class=\"notranslate\">data/store.db</code> should shrink in file size, as it relinquishes the space dedicated to previously deleted files. If you start PicoShare again, the System Information screen will show the smaller size of PicoShare files.</p>","updatedAt":"2025-05-21T16:15:48Z","upvoteCount":null,"author":{"login":"eryajf","avatarUrl":"https://avatars.githubusercontent.com/u/33259379?u=e4a4090a38ac2473aaed4ef9945233636776c6c3&v=4","url":"https://github.com/eryajf"},"category":null,"labels":{"edges":[{"node":{"name":"更多","color":"25B472"}},{"node":{"name":"Sync-Tools","color":"2f12e5"}},{"node":{"name":"mtlynch","color":"000506"}}]},"comments":{"edges":[]}}},"pageContext":{"number":436,"previous":{"title":"hipages/php-fpm_exporter: 用于 PHP-FPM 指标的 Prometheus Exporter","number":435},"next":{"title":"OpenAtomFoundation/pika: Pika 是一个以 RocksDB 为存储引擎的的大容量、高性能、多租户、数据可持久化的弹性 KV 数据存储系统，完全兼容 Redis 协议，支持其常用的数据结构。","number":437}}},
    "staticQueryHashes": ["151096407","2861350382"]}